Aprendizaje no supervisado: Trade&Ahead¶

Puntos: 60

Contexto¶

El mercado de valores ha demostrado constantemente ser un buen lugar para invertir y ahorrar para el futuro. Hay muchas razones convincentes para invertir en acciones. Puede ayudar a combatir la inflación, crear riqueza y también proporciona algunos beneficios fiscales. Los buenos rendimientos constantes de las inversiones durante un largo período de tiempo también pueden crecer mucho más de lo que parece posible. Además, gracias al poder del interés compuesto, cuanto antes se empieza a invertir, mayor es el corpus que se puede tener para la jubilación. En general, invertir en acciones puede ayudar a cumplir las aspiraciones financieras de la vida.

Es importante mantener una cartera diversificada al invertir en acciones para maximizar las ganancias bajo cualquier condición de mercado. Tener una cartera diversificada tiende a generar mayores rendimientos y enfrentar un menor riesgo al moderar las pérdidas potenciales cuando el mercado está a la baja. A menudo es fácil perderse en un mar de métricas financieras para analizar mientras se determina el valor de una acción, y hacer lo mismo para una multitud de acciones para identificar las opciones correctas para un individuo puede ser una tarea tediosa. Al hacer un análisis de conglomerados, se pueden identificar las acciones que exhiben características similares y las que exhiben una correlación mínima. Esto ayudará a los inversores a analizar mejor las acciones en diferentes segmentos del mercado y ayudará a protegerse contra los riesgos que podrían hacer que la cartera sea vulnerable a pérdidas.

Objetivo¶

Trade&Ahead es una firma de consultoría financiera que brinda a sus clientes estrategias de inversión personalizadas. Lo contrataron como científico de datos y le proporcionaron datos que incluyen el precio de las acciones y algunos indicadores financieros para algunas empresas que cotizan en la Bolsa de Valores de Nueva York. Le han asignado las tareas de analizar los datos, agrupar las acciones en función de los atributos proporcionados y compartir información sobre las características de cada grupo.

Diccionario de datos¶

  • Ticker Symbol: una abreviatura utilizada para identificar de forma única las acciones que cotizan en bolsa de una acción en particular en un mercado de valores en particular
  • Company: Nombre de la empresa
  • GICS Sector: El sector económico específico asignado a una empresa por el Estándar de Clasificación de la Industria Global (GICS) que mejor define sus operaciones comerciales
  • GICS Sub Industry: el grupo de subindustria específico asignado a una empresa por el Estándar de Clasificación de la Industria Global (GICS) que mejor define sus operaciones comerciales
  • Current Price: Precio actual de la acción en dólares
  • Price Change: cambio porcentual en el precio de las acciones en 13 semanas
  • Volatility: Desviación estándar del precio de las acciones en las últimas 13 semanas
  • ROE: una medida del rendimiento financiero que se calcula dividiendo los ingresos netos por el patrimonio de los accionistas (el patrimonio de los accionistas es igual a los activos de una empresa menos su deuda)
  • Cash Ratio: La relación entre las reservas totales de efectivo y equivalentes de efectivo de una empresa y sus pasivos corrientes totales.
  • Net Cash Flow: La diferencia entre las entradas y salidas de caja de una empresa (en dólares)
  • Net Income: Ingresos menos gastos, intereses e impuestos (en dólares)
  • Earnings Per Share: la utilidad neta de la empresa dividida por el número de acciones ordinarias que tiene en circulación (en dólares)
  • Estimated Shares Outstanding: Acciones de la Compañía actualmente en poder de todos sus accionistas
  • P/E Ratio: relación entre el precio actual de las acciones de la empresa y las ganancias por acción
  • P/B Ratio: relación entre el precio de las acciones de la empresa por acción y su valor en libros por acción (el valor en libros de una empresa es la diferencia neta entre los activos totales y los pasivos totales de esa empresa)

Importación de bibliotecas y datos necesarios¶

In [241]:
# this will help in making the Python code more structured automatically (good coding practice)
#%load_ext nb_black

# Libraries to help with reading and manipulating data
import numpy as np
import pandas as pd

# Libraries to help with data visualization
import matplotlib.pyplot as plt
import seaborn as sns

# to scale the data using z-score
from sklearn.preprocessing import StandardScaler

# to compute distances
from scipy.spatial.distance import cdist
from scipy.spatial.distance import pdist


# to perform k-means clustering and compute silhouette scores
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

# to visualize the elbow curve and silhouette scores
from yellowbrick.cluster import KElbowVisualizer, SilhouetteVisualizer

import warnings
warnings.filterwarnings("ignore") 

# Removes the limit for the number of displayed columns
pd.set_option("display.max_columns", None)
# Sets the limit for the number of displayed rows
pd.set_option("display.max_rows", 200)

# to perform hierarchical clustering, compute cophenetic correlation, and create dendrograms
from sklearn.cluster import AgglomerativeClustering
from scipy.cluster.hierarchy import dendrogram, linkage, cophenet

# to perform PCA
from sklearn.decomposition import PCA
#Para evitar avisos
# To suppress the warnings
import warnings
warnings.filterwarnings("ignore")

#Elimina el límite para la cantidad de columnas mostradas.
# Removes the limit for the number of displayed columns
pd.set_option("display.max_columns", None)
#Establece el límite para la cantidad de filas mostradas en 100.
# Sets the limit for the number of displayed rows
pd.set_option("display.max_rows", 100)

# ajuste a  3 decimal points
pd.set_option("display.float_format", lambda x: "%.3f" % x)

# This will help in making the Python code more structured automatically (good coding practice)
#%load_ext nb_black

Cargando el conjunto de datos¶

In [242]:
# Cargar el conjunto de datos
# loading the dataset
df= pd.read_csv("stock_data.csv")
In [243]:
#Copia de la data
data=df.copy()

Resumen de datos¶

  • Observaciones
  • Controles de cordura
In [244]:
# Revisión de la forma de los datos
print("-El conjunto de datos  contiene", data.shape[0], 'FILAS y', data.shape[1], "COLUMNAS.")
data.shape
-El conjunto de datos  contiene 340 FILAS y 15 COLUMNAS.
Out[244]:
(340, 15)
In [245]:
#Revisión de el data set
# viewing a random sample of the dataset
data.sample(n=10, random_state=1)
Out[245]:
Ticker Symbol Security GICS Sector GICS Sub Industry Current Price Price Change Volatility ROE Cash Ratio Net Cash Flow Net Income Earnings Per Share Estimated Shares Outstanding P/E Ratio P/B Ratio
102 DVN Devon Energy Corp. Energy Oil & Gas Exploration & Production 32.000 -15.478 2.924 205 70 830000000 -14454000000 -35.550 406582278.500 93.089 1.786
125 FB Facebook Information Technology Internet Software & Services 104.660 16.224 1.321 8 958 592000000 3669000000 1.310 2800763359.000 79.893 5.884
11 AIV Apartment Investment & Mgmt Real Estate REITs 40.030 7.579 1.163 15 47 21818000 248710000 1.520 163625000.000 26.336 -1.269
248 PG Procter & Gamble Consumer Staples Personal Products 79.410 10.661 0.806 17 129 160383000 636056000 3.280 491391569.000 24.070 -2.257
238 OXY Occidental Petroleum Energy Oil & Gas Exploration & Production 67.610 0.865 1.590 32 64 -588000000 -7829000000 -10.230 765298142.700 93.089 3.345
336 YUM Yum! Brands Inc Consumer Discretionary Restaurants 52.516 -8.699 1.479 142 27 159000000 1293000000 2.970 435353535.400 17.682 -3.838
112 EQT EQT Corporation Energy Oil & Gas Exploration & Production 52.130 -21.254 2.365 2 201 523803000 85171000 0.560 152091071.400 93.089 9.568
147 HAL Halliburton Co. Energy Oil & Gas Equipment & Services 34.040 -5.102 1.966 4 189 7786000000 -671000000 -0.790 849367088.600 93.089 17.346
89 DFS Discover Financial Services Financials Consumer Finance 53.620 3.654 1.160 20 99 2288000000 2297000000 5.140 446887159.500 10.432 -0.376
173 IVZ Invesco Ltd. Financials Asset Management & Custody Banks 33.480 7.067 1.581 12 67 412000000 968100000 2.260 428362831.900 14.814 4.219
In [246]:
#Revisión de los tipos de datos y valores nulos
# checking datatypes and number of non-null values for each column
data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 340 entries, 0 to 339
Data columns (total 15 columns):
 #   Column                        Non-Null Count  Dtype  
---  ------                        --------------  -----  
 0   Ticker Symbol                 340 non-null    object 
 1   Security                      340 non-null    object 
 2   GICS Sector                   340 non-null    object 
 3   GICS Sub Industry             340 non-null    object 
 4   Current Price                 340 non-null    float64
 5   Price Change                  340 non-null    float64
 6   Volatility                    340 non-null    float64
 7   ROE                           340 non-null    int64  
 8   Cash Ratio                    340 non-null    int64  
 9   Net Cash Flow                 340 non-null    int64  
 10  Net Income                    340 non-null    int64  
 11  Earnings Per Share            340 non-null    float64
 12  Estimated Shares Outstanding  340 non-null    float64
 13  P/E Ratio                     340 non-null    float64
 14  P/B Ratio                     340 non-null    float64
dtypes: float64(7), int64(4), object(4)
memory usage: 40.0+ KB
  • Las variables presentan tipos de datos esperados

  • Ticker Symbol,Security GICS Sector, GICS Sub Industry son del tipo objeto lo cual concuerda con lo esperado.

  • Variables como Current Price, Price Change, Volatility,Estimated Shares Outstanding, P/E Ratio, P/B Ratio son caracteristicas numéricas tipo float.
  • Variables como ROE, Cash Ratio ,Net Cash Flow, Net Income, Earnings Per Share, Estimated Shares Outstanding son caracteristicas numéricas tipo integer.
In [248]:
# Let's look at the statistical summary of the data
display(data.describe().T)
display(data.describe(include = 'object').T)
count mean std min 25% 50% 75% max
Current Price 340.000 80.862 98.055 4.500 38.555 59.705 92.880 1274.950
Price Change 340.000 4.078 12.006 -47.130 -0.939 4.820 10.695 55.052
Volatility 340.000 1.526 0.592 0.733 1.135 1.386 1.696 4.580
ROE 340.000 39.597 96.548 1.000 9.750 15.000 27.000 917.000
Cash Ratio 340.000 70.024 90.421 0.000 18.000 47.000 99.000 958.000
Net Cash Flow 340.000 55537620.588 1946365312.176 -11208000000.000 -193906500.000 2098000.000 169810750.000 20764000000.000
Net Income 340.000 1494384602.941 3940150279.328 -23528000000.000 352301250.000 707336000.000 1899000000.000 24442000000.000
Earnings Per Share 340.000 2.777 6.588 -61.200 1.558 2.895 4.620 50.090
Estimated Shares Outstanding 340.000 577028337.754 845849595.418 27672156.860 158848216.100 309675137.800 573117457.325 6159292035.000
P/E Ratio 340.000 32.613 44.349 2.935 15.045 20.820 31.765 528.039
P/B Ratio 340.000 -1.718 13.967 -76.119 -4.352 -1.067 3.917 129.065
count unique top freq
Ticker Symbol 340 340 AAL 1
Security 340 340 American Airlines Group 1
GICS Sector 340 11 Industrials 53
GICS Sub Industry 340 104 Oil & Gas Exploration & Production 16
  • El sector de comercio con mayor cantidad de empresas es Industrials.
  • 340 empresas se dividen en 104 sub industrias, agrupadas en 11 sectores de el comercio.
  • El sector de la industria que mayor frecuencia tiene es Oil & Gas Exploration & Production.
  • El precio de las acciones promedio es de 80.86 dolares, no obstante hay acciones con valores alejados de ese promedio, valores máximos de hasta 1274.95 dolares, y valores minimos de 4.5 dolares.
  • Hay acciones que presentan cambio de precio, algunas empresas tienen acciones que está bajando. Al menos un 25%.
  • El flujo de caja neto negativo en al menos el 25% de las empresas, indica que están generando menos efectivo del que está gastando. Esto puede ser un problema a corto plazo, que sugiere dificultades para pagar sus facturas. A largo plazo, un flujo de caja neto negativo puede indicar que la empresa no es sostenible.
  • Hay empresas que presentan "Net Income"ingresos netos negativos, esto significan que la empresa está generando pérdidas en lugar de ganancias.
  • PB/Ratio (Relación Precio-Valor en Libros). Un P/B Ratio, negativo en al menos un 50% de las empresas, significa que el precio de las acciones de la empresa es menor que el valor en libros de la empresa. Esto puede indicar que la empresa está infravalorada, o puede ser una señal de que la empresa está teniendo problemas.(menos del 25%).
  • Un earnings per share (EPS) negativo indica que existen empresas que generan pérdidas en lugar de ganancias. (menos del 25%).
In [249]:
#Revisión de valores únicos de ls feactures
# Let's see unique values
cols = data.columns

for col in cols:
    print("Unique values in the column '{}' are \n\n".format(col), data[col].unique())
    print("-" * 100)
Unique values in the column 'Ticker Symbol' are 

 ['AAL' 'ABBV' 'ABT' 'ADBE' 'ADI' 'ADM' 'ADS' 'AEE' 'AEP' 'AFL' 'AIG' 'AIV'
 'AIZ' 'AJG' 'AKAM' 'ALB' 'ALK' 'ALL' 'ALLE' 'ALXN' 'AMAT' 'AME' 'AMG'
 'AMGN' 'AMP' 'AMT' 'AMZN' 'AN' 'ANTM' 'AON' 'APA' 'APC' 'APH' 'ARNC'
 'ATVI' 'AVB' 'AVGO' 'AWK' 'AXP' 'BA' 'BAC' 'BAX' 'BBT' 'BCR' 'BHI' 'BIIB'
 'BK' 'BLL' 'BMY' 'BSX' 'BWA' 'BXP' 'C' 'CAT' 'CB' 'CBG' 'CCI' 'CCL'
 'CELG' 'CF' 'CFG' 'CHD' 'CHK' 'CHRW' 'CHTR' 'CI' 'CINF' 'CL' 'CMA' 'CME'
 'CMG' 'CMI' 'CMS' 'CNC' 'CNP' 'COF' 'COG' 'COO' 'CSX' 'CTL' 'CTSH' 'CTXS'
 'CVS' 'CVX' 'CXO' 'D' 'DAL' 'DD' 'DE' 'DFS' 'DGX' 'DHR' 'DIS' 'DISCA'
 'DISCK' 'DLPH' 'DLR' 'DNB' 'DOV' 'DPS' 'DUK' 'DVA' 'DVN' 'EBAY' 'ECL'
 'ED' 'EFX' 'EIX' 'EMN' 'EOG' 'EQIX' 'EQR' 'EQT' 'ES' 'ESS' 'ETFC' 'ETN'
 'ETR' 'EW' 'EXC' 'EXPD' 'EXPE' 'EXR' 'F' 'FAST' 'FB' 'FBHS' 'FCX' 'FE'
 'FIS' 'FISV' 'FLIR' 'FLR' 'FLS' 'FMC' 'FRT' 'FSLR' 'FTR' 'GD' 'GGP'
 'GILD' 'GLW' 'GM' 'GPC' 'GRMN' 'GT' 'GWW' 'HAL' 'HAS' 'HBAN' 'HCA' 'HCN'
 'HCP' 'HES' 'HIG' 'HOG' 'HON' 'HPE' 'HPQ' 'HRL' 'HSIC' 'HST' 'HSY' 'HUM'
 'IBM' 'IDXX' 'IFF' 'INTC' 'IP' 'IPG' 'IRM' 'ISRG' 'ITW' 'IVZ' 'JBHT'
 'JEC' 'JNPR' 'JPM' 'KIM' 'KMB' 'KMI' 'KO' 'KSU' 'LEG' 'LEN' 'LH' 'LKQ'
 'LLL' 'LLY' 'LMT' 'LNT' 'LUK' 'LUV' 'LVLT' 'LYB' 'MA' 'MAA' 'MAC' 'MAR'
 'MAS' 'MAT' 'MCD' 'MCO' 'MDLZ' 'MET' 'MHK' 'MJN' 'MKC' 'MLM' 'MMC' 'MMM'
 'MNST' 'MO' 'MOS' 'MPC' 'MRK' 'MRO' 'MTB' 'MTD' 'MUR' 'MYL' 'NAVI' 'NBL'
 'NDAQ' 'NEE' 'NEM' 'NFLX' 'NFX' 'NLSN' 'NOV' 'NSC' 'NTRS' 'NUE' 'NWL' 'O'
 'OKE' 'OMC' 'ORLY' 'OXY' 'PBCT' 'PBI' 'PCAR' 'PCG' 'PCLN' 'PEG' 'PEP'
 'PFE' 'PFG' 'PG' 'PGR' 'PHM' 'PM' 'PNC' 'PNR' 'PNW' 'PPG' 'PPL' 'PRU'
 'PSX' 'PWR' 'PX' 'PYPL' 'R' 'RCL' 'REGN' 'RHI' 'ROP' 'RRC' 'RSG' 'SCG'
 'SCHW' 'SE' 'SEE' 'SHW' 'SLG' 'SNI' 'SO' 'SPG' 'SPGI' 'SRCL' 'SRE' 'STI'
 'STT' 'SWKS' 'SWN' 'SYF' 'SYK' 'T' 'TAP' 'TDC' 'TGNA' 'TMK' 'TMO' 'TRIP'
 'TRV' 'TSCO' 'TSN' 'TSO' 'TSS' 'TXN' 'UAA' 'UAL' 'UDR' 'UHS' 'UNH' 'UNM'
 'UNP' 'UPS' 'UTX' 'VAR' 'VLO' 'VMC' 'VNO' 'VRSK' 'VRSN' 'VRTX' 'VTR' 'VZ'
 'WAT' 'WEC' 'WFC' 'WHR' 'WM' 'WMB' 'WU' 'WY' 'WYN' 'WYNN' 'XEC' 'XEL'
 'XL' 'XOM' 'XRAY' 'XRX' 'XYL' 'YHOO' 'YUM' 'ZBH' 'ZION' 'ZTS']
----------------------------------------------------------------------------------------------------
Unique values in the column 'Security' are 

 ['American Airlines Group' 'AbbVie' 'Abbott Laboratories'
 'Adobe Systems Inc' 'Analog Devices, Inc.' 'Archer-Daniels-Midland Co'
 'Alliance Data Systems' 'Ameren Corp' 'American Electric Power'
 'AFLAC Inc' 'American International Group, Inc.'
 'Apartment Investment & Mgmt' 'Assurant Inc' 'Arthur J. Gallagher & Co.'
 'Akamai Technologies Inc' 'Albemarle Corp' 'Alaska Air Group Inc'
 'Allstate Corp' 'Allegion' 'Alexion Pharmaceuticals'
 'Applied Materials Inc' 'AMETEK Inc' 'Affiliated Managers Group Inc'
 'Amgen Inc' 'Ameriprise Financial' 'American Tower Corp A'
 'Amazon.com Inc' 'AutoNation Inc' 'Anthem Inc.' 'Aon plc'
 'Apache Corporation' 'Anadarko Petroleum Corp' 'Amphenol Corp'
 'Arconic Inc' 'Activision Blizzard' 'AvalonBay Communities, Inc.'
 'Broadcom' 'American Water Works Company Inc' 'American Express Co'
 'Boeing Company' 'Bank of America Corp' 'Baxter International Inc.'
 'BB&T Corporation' 'Bard (C.R.) Inc.' 'Baker Hughes Inc'
 'BIOGEN IDEC Inc.' 'The Bank of New York Mellon Corp.' 'Ball Corp'
 'Bristol-Myers Squibb' 'Boston Scientific' 'BorgWarner'
 'Boston Properties' 'Citigroup Inc.' 'Caterpillar Inc.' 'Chubb Limited'
 'CBRE Group' 'Crown Castle International Corp.' 'Carnival Corp.'
 'Celgene Corp.' 'CF Industries Holdings Inc' 'Citizens Financial Group'
 'Church & Dwight' 'Chesapeake Energy' 'C. H. Robinson Worldwide'
 'Charter Communications' 'CIGNA Corp.' 'Cincinnati Financial'
 'Colgate-Palmolive' 'Comerica Inc.' 'CME Group Inc.'
 'Chipotle Mexican Grill' 'Cummins Inc.' 'CMS Energy'
 'Centene Corporation' 'CenterPoint Energy' 'Capital One Financial'
 'Cabot Oil & Gas' 'The Cooper Companies' 'CSX Corp.' 'CenturyLink Inc'
 'Cognizant Technology Solutions' 'Citrix Systems' 'CVS Health'
 'Chevron Corp.' 'Concho Resources' 'Dominion Resources' 'Delta Air Lines'
 'Du Pont (E.I.)' 'Deere & Co.' 'Discover Financial Services'
 'Quest Diagnostics' 'Danaher Corp.' 'The Walt Disney Company'
 'Discovery Communications-A' 'Discovery Communications-C'
 'Delphi Automotive' 'Digital Realty Trust' 'Dun & Bradstreet'
 'Dover Corp.' 'Dr Pepper Snapple Group' 'Duke Energy' 'DaVita Inc.'
 'Devon Energy Corp.' 'eBay Inc.' 'Ecolab Inc.' 'Consolidated Edison'
 'Equifax Inc.' "Edison Int'l" 'Eastman Chemical' 'EOG Resources'
 'Equinix' 'Equity Residential' 'EQT Corporation' 'Eversource Energy'
 'Essex Property Trust, Inc.' 'E*Trade' 'Eaton Corporation'
 'Entergy Corp.' 'Edwards Lifesciences' 'Exelon Corp.' "Expeditors Int'l"
 'Expedia Inc.' 'Extra Space Storage' 'Ford Motor' 'Fastenal Co'
 'Facebook' 'Fortune Brands Home & Security' 'Freeport-McMoran Cp & Gld'
 'FirstEnergy Corp' 'Fidelity National Information Services' 'Fiserv Inc'
 'FLIR Systems' 'Fluor Corp.' 'Flowserve Corporation' 'FMC Corporation'
 'Federal Realty Investment Trust' 'First Solar Inc'
 'Frontier Communications' 'General Dynamics'
 'General Growth Properties Inc.' 'Gilead Sciences' 'Corning Inc.'
 'General Motors' 'Genuine Parts' 'Garmin Ltd.' 'Goodyear Tire & Rubber'
 'Grainger (W.W.) Inc.' 'Halliburton Co.' 'Hasbro Inc.'
 'Huntington Bancshares' 'HCA Holdings' 'Welltower Inc.' 'HCP Inc.'
 'Hess Corporation' 'Hartford Financial Svc.Gp.' 'Harley-Davidson'
 "Honeywell Int'l Inc." 'Hewlett Packard Enterprise' 'HP Inc.'
 'Hormel Foods Corp.' 'Henry Schein' 'Host Hotels & Resorts'
 'The Hershey Company' 'Humana Inc.' 'International Business Machines'
 'IDEXX Laboratories' 'Intl Flavors & Fragrances' 'Intel Corp.'
 'International Paper' 'Interpublic Group' 'Iron Mountain Incorporated'
 'Intuitive Surgical Inc.' 'Illinois Tool Works' 'Invesco Ltd.'
 'J. B. Hunt Transport Services' 'Jacobs Engineering Group'
 'Juniper Networks' 'JPMorgan Chase & Co.' 'Kimco Realty' 'Kimberly-Clark'
 'Kinder Morgan' 'Coca Cola Company' 'Kansas City Southern'
 'Leggett & Platt' 'Lennar Corp.' 'Laboratory Corp. of America Holding'
 'LKQ Corporation' 'L-3 Communications Holdings' 'Lilly (Eli) & Co.'
 'Lockheed Martin Corp.' 'Alliant Energy Corp' 'Leucadia National Corp.'
 'Southwest Airlines' 'Level 3 Communications' 'LyondellBasell'
 'Mastercard Inc.' 'Mid-America Apartments' 'Macerich' "Marriott Int'l."
 'Masco Corp.' 'Mattel Inc.' "McDonald's Corp." "Moody's Corp"
 'Mondelez International' 'MetLife Inc.' 'Mohawk Industries'
 'Mead Johnson' 'McCormick & Co.' 'Martin Marietta Materials'
 'Marsh & McLennan' '3M Company' 'Monster Beverage' 'Altria Group Inc'
 'The Mosaic Company' 'Marathon Petroleum' 'Merck & Co.'
 'Marathon Oil Corp.' 'M&T Bank Corp.' 'Mettler Toledo' 'Murphy Oil'
 'Mylan N.V.' 'Navient' 'Noble Energy Inc' 'NASDAQ OMX Group'
 'NextEra Energy' 'Newmont Mining Corp. (Hldg. Co.)' 'Netflix Inc.'
 'Newfield Exploration Co' 'Nielsen Holdings'
 'National Oilwell Varco Inc.' 'Norfolk Southern Corp.'
 'Northern Trust Corp.' 'Nucor Corp.' 'Newell Brands'
 'Realty Income Corporation' 'ONEOK' 'Omnicom Group' "O'Reilly Automotive"
 'Occidental Petroleum' "People's United Financial" 'Pitney-Bowes'
 'PACCAR Inc.' 'PG&E Corp.' 'Priceline.com Inc'
 'Public Serv. Enterprise Inc.' 'PepsiCo Inc.' 'Pfizer Inc.'
 'Principal Financial Group' 'Procter & Gamble' 'Progressive Corp.'
 'Pulte Homes Inc.' 'Philip Morris International' 'PNC Financial Services'
 'Pentair Ltd.' 'Pinnacle West Capital' 'PPG Industries' 'PPL Corp.'
 'Prudential Financial' 'Phillips 66' 'Quanta Services Inc.'
 'Praxair Inc.' 'PayPal' 'Ryder System' 'Royal Caribbean Cruises Ltd'
 'Regeneron' 'Robert Half International' 'Roper Industries'
 'Range Resources Corp.' 'Republic Services Inc' 'SCANA Corp'
 'Charles Schwab Corporation' 'Spectra Energy Corp.' 'Sealed Air'
 'Sherwin-Williams' 'SL Green Realty' 'Scripps Networks Interactive Inc.'
 'Southern Co.' 'Simon Property Group Inc' 'S&P Global, Inc.'
 'Stericycle Inc' 'Sempra Energy' 'SunTrust Banks' 'State Street Corp.'
 'Skyworks Solutions' 'Southwestern Energy' 'Synchrony Financial'
 'Stryker Corp.' 'AT&T Inc' 'Molson Coors Brewing Company'
 'Teradata Corp.' 'Tegna, Inc.' 'Torchmark Corp.'
 'Thermo Fisher Scientific' 'TripAdvisor' 'The Travelers Companies Inc.'
 'Tractor Supply Company' 'Tyson Foods' 'Tesoro Petroleum Co.'
 'Total System Services' 'Texas Instruments' 'Under Armour'
 'United Continental Holdings' 'UDR Inc' 'Universal Health Services, Inc.'
 'United Health Group Inc.' 'Unum Group' 'Union Pacific'
 'United Parcel Service' 'United Technologies' 'Varian Medical Systems'
 'Valero Energy' 'Vulcan Materials' 'Vornado Realty Trust'
 'Verisk Analytics' 'Verisign Inc.' 'Vertex Pharmaceuticals Inc'
 'Ventas Inc' 'Verizon Communications' 'Waters Corporation'
 'Wec Energy Group Inc' 'Wells Fargo' 'Whirlpool Corp.'
 'Waste Management Inc.' 'Williams Cos.' 'Western Union Co'
 'Weyerhaeuser Corp.' 'Wyndham Worldwide' 'Wynn Resorts Ltd'
 'Cimarex Energy' 'Xcel Energy Inc' 'XL Capital' 'Exxon Mobil Corp.'
 'Dentsply Sirona' 'Xerox Corp.' 'Xylem Inc.' 'Yahoo Inc.'
 'Yum! Brands Inc' 'Zimmer Biomet Holdings' 'Zions Bancorp' 'Zoetis']
----------------------------------------------------------------------------------------------------
Unique values in the column 'GICS Sector' are 

 ['Industrials' 'Health Care' 'Information Technology' 'Consumer Staples'
 'Utilities' 'Financials' 'Real Estate' 'Materials'
 'Consumer Discretionary' 'Energy' 'Telecommunications Services']
----------------------------------------------------------------------------------------------------
Unique values in the column 'GICS Sub Industry' are 

 ['Airlines' 'Pharmaceuticals' 'Health Care Equipment'
 'Application Software' 'Semiconductors' 'Agricultural Products'
 'Data Processing & Outsourced Services' 'MultiUtilities'
 'Electric Utilities' 'Life & Health Insurance'
 'Property & Casualty Insurance' 'REITs' 'Multi-line Insurance'
 'Insurance Brokers' 'Internet Software & Services' 'Specialty Chemicals'
 'Building Products' 'Biotechnology' 'Semiconductor Equipment'
 'Electrical Components & Equipment' 'Asset Management & Custody Banks'
 'Specialized REITs' 'Internet & Direct Marketing Retail'
 'Specialty Stores' 'Managed Health Care'
 'Oil & Gas Exploration & Production' 'Electronic Components'
 'Aerospace & Defense' 'Home Entertainment Software' 'Residential REITs'
 'Water Utilities' 'Consumer Finance' 'Banks'
 'Oil & Gas Equipment & Services' 'Metal & Glass Containers'
 'Health Care Distributors' 'Auto Parts & Equipment'
 'Construction & Farm Machinery & Heavy Trucks' 'Real Estate Services'
 'Hotels, Resorts & Cruise Lines' 'Fertilizers & Agricultural Chemicals'
 'Regional Banks' 'Household Products' 'Integrated Oil & Gas'
 'Air Freight & Logistics' 'Cable & Satellite'
 'Financial Exchanges & Data' 'Restaurants' 'Industrial Machinery'
 'Health Care Supplies' 'Railroads'
 'Integrated Telecommunications Services' 'IT Consulting & Other Services'
 'Drug Retail' 'Diversified Chemicals' 'Health Care Facilities'
 'Industrial Conglomerates' 'Broadcasting & Cable TV'
 'Research & Consulting Services' 'Soft Drinks'
 'Investment Banking & Brokerage' 'Automobile Manufacturers' 'Copper'
 'Electronic Equipment & Instruments' 'Diversified Commercial Services'
 'Retail REITs' 'Consumer Electronics' 'Tires & Rubber'
 'Industrial Materials' 'Leisure Products' 'Motorcycle Manufacturers'
 'Technology Hardware, Storage & Peripherals' 'Computer Hardware'
 'Packaged Foods & Meats' 'Paper Packaging' 'Advertising' 'Trucking'
 'Networking Equipment' 'Oil & Gas Refining & Marketing & Transportation'
 'Homebuilding' 'Distributors' 'Multi-Sector Holdings'
 'Alternative Carriers' 'Diversified Financial Services'
 'Home Furnishings' 'Construction Materials' 'Tobacco'
 'Life Sciences Tools & Services' 'Gold' 'Steel'
 'Housewares & Specialties' 'Thrifts & Mortgage Finance'
 'Technology, Hardware, Software and Supplies' 'Personal Products'
 'Industrial Gases' 'Human Resource & Employment Services' 'Office REITs'
 'Brewers' 'Publishing' 'Specialty Retail'
 'Apparel, Accessories & Luxury Goods' 'Household Appliances'
 'Environmental Services' 'Casinos & Gaming']
----------------------------------------------------------------------------------------------------
Unique values in the column 'Current Price' are 

 [  42.349998     59.240002     44.91         93.940002     55.32
   36.68        276.570007     43.23         58.27         59.900002
   61.970001     40.029999     80.540001     40.939999     52.630001
   56.009998     80.510002     62.09         65.919998    190.75
   18.67         53.59        159.759995    162.330002    106.419998
   96.949997    675.890015     59.66        139.440002     92.209999
   44.470001     48.580002     52.23          7.3988066    38.709999
  184.130005    145.149994     59.75         69.550003    144.589996
   16.83         38.150002     37.810001    189.440002     46.150002
  306.350006     41.220001     72.730003     68.790001     18.440001
  127.540001     51.75         67.959999    116.849998     34.580002
   86.449997     54.48        119.760002     40.810001     26.190001
   42.4399985     4.5          62.02        183.100006    146.330002
   59.169998     66.620003     41.830002     90.599998    479.850006
   88.010002     36.080002     65.809998     18.360001     72.18
   17.690001    134.199997     25.950001     25.16         60.02
   75.650002     97.769997     89.959999     92.860001     67.639999
   50.689999     66.599998     76.269997     53.619999     71.139999
   70.41698484  105.080002     26.68         25.219999     85.730003
   75.620003    103.93         61.310001     93.199997     71.389999
   69.709999     32.           27.48        114.379997     64.269997
  111.370003     59.209999     67.510002     70.790001    302.399994
   81.589996     52.130001     51.07        239.410004     29.639999
   52.040001     68.360001     78.980003     27.77         45.099998
  124.300003     88.209999     14.09         40.82        104.660004
   55.5           6.77         31.73         60.599998     91.459999
   28.07         47.220001     42.080002     39.130001    146.100006
   65.989998      4.67        137.360001     27.209999    101.190002
   18.280001     34.009998     85.889999     37.169998     32.669998
  202.589996     34.040001     67.360001     11.06         67.629997
   68.029999     34.82695902   48.48         43.459999     45.389999
  103.57         15.2          11.84         39.540001    158.190002
   15.34         89.269997    178.509995    137.619995     72.919998
  119.639999     34.450001     37.700001     23.280001     27.01
  546.159973     92.68         33.48         73.360001     41.950001
   27.6          66.029999     26.459999    127.300003     14.92
   42.959999     74.669998     42.02         48.91        123.639999
   29.629999    119.510002     84.260002    217.149994     31.2250005
   17.389999     43.060001     54.360001     86.900002     97.360001
   90.809998     80.690002     67.040001     28.299999     27.17
  118.139999    100.339996     44.84         48.209999    189.389999
   78.949997     85.559998    136.580002     55.450001    150.639999
   49.65333167   58.209999     27.59         51.84         52.82
   12.59        121.18        339.130005     22.450001     54.07
   11.45         32.93         58.169998    103.889999     17.99
   32.560001     46.599998     33.490002     84.589996     72.089996
   40.299999     44.080002     51.630001     24.66         75.660004
  253.419998     67.610001     16.15         20.65         47.400002
   53.189999   1274.949951     38.689999     99.919998     32.279999
   44.98         79.410004     31.799999     17.82         87.910004
   95.309998     49.529999     64.480003     98.82         34.130001
   81.410004     81.800003     20.25        102.400002     36.200001
   56.830002    101.209999    542.869995     47.139999    189.789993
   24.610001     43.990002     60.490002     23.940001     44.599998
  259.600006    112.980003     55.209999     46.790001    194.440002
   98.580002    120.599998     94.010002     42.84         66.360001
   76.830002      7.11         30.41         92.940002     34.41
   93.919998     26.42         25.52         57.16        141.850006
   85.25        112.860001     85.5          53.330002    105.370003
   49.799999     54.810001     80.610001     57.299999     37.57
  119.489998    117.639999     33.290001     78.199997     96.230003
   96.07         80.800003     70.709999     94.970001     99.959999
   76.879997     87.360001    125.830002     56.43         46.220001
  134.580002     51.310001    146.869995     53.369999     25.700001
   17.91         29.98         72.650002     69.190002     89.379997
   35.91         39.18         77.949997     60.849998     10.63
   36.5          33.259998     52.51617541  102.589996     27.299999
   47.919998  ]
----------------------------------------------------------------------------------------------------
Unique values in the column 'Price Change' are 

 [ 9.99999481e+00  8.33943306e+00  1.13011208e+01  1.39771952e+01
 -1.82785810e+00 -1.20172682e+01  6.18928557e+00  2.17442444e+00
  2.37175342e+00  3.02718100e+00  8.35810821e+00  7.57860810e+00
  1.89777325e+00 -6.06943448e-01 -2.37909028e+01  2.64619479e+01
  2.06643644e+00  6.59227468e+00  1.37532301e+01  2.23383802e+01
  2.68342391e+01  2.21247377e+00 -6.61133544e+00  1.71634778e+01
 -2.42068591e+00  1.02330873e+01  3.22681047e+01  2.35031562e+00
 -6.20052749e-01  3.91030097e+00  1.13978037e+01 -2.08020835e+01
  2.69366688e+00  1.64778443e+00  2.33195293e+01  4.85763024e+00
  1.79026828e+01  8.59687386e+00 -6.21629012e+00  1.01050779e+01
  8.44072165e+00  1.67023651e+01  5.94004500e+00  1.54918196e+00
 -1.23123672e+01  4.91798229e+00  5.42200283e+00  1.65358164e+01
  1.60816796e+01  1.17575818e+01  3.47056255e+00  7.20349662e+00
  4.71469465e+00  3.55020891e+00  1.31938338e+01  8.19775683e+00
  9.56906820e+00  8.93821671e+00  8.44879290e+00 -9.25061131e+00
  1.02736884e+01  1.04761548e+00 -3.81017882e+01 -9.00822130e+00
  3.59850674e+00  8.68241465e+00  9.77735771e+00  4.78137921e+00
  1.90012916e+00 -2.40224491e+00 -3.31312678e+01 -1.88847908e+01
  1.94971184e+00  2.17125911e+01  1.43646961e+00 -6.19574582e-01
 -2.00993595e+01 -9.67221466e+00 -4.34942146e+00  1.59231682e-01
 -4.65448920e+00  9.02147729e+00  1.32656133e+00  1.28449547e+01
 -2.74403217e+00 -3.98864176e+00  1.33750842e+01  3.74896767e+01
  3.95256083e+00  3.65358399e+00  1.56747951e+01  8.92459471e+00
  2.04914148e+00  2.02676864e+00  3.57289117e+00  1.21093264e+01
  1.55739004e+01 -1.18843887e+00  6.97958459e+00  1.80493990e+01
 -8.33447724e-01 -3.62229079e+00 -1.54780794e+01  1.21632653e+01
  3.78368391e+00 -3.97430599e+00  1.45310626e+01 -6.13507114e+00
  3.65423785e+00 -4.07859333e+00  1.00196502e+01  8.03760493e+00
 -2.12537714e+01  7.09921134e-01  6.76507254e+00  1.26567850e+01
  1.16641138e+00  4.91098343e+00  1.16167337e+01 -6.40377486e+00
 -4.44915880e+00  4.89451730e+00  1.39222511e+01  2.39825581e+00
  1.09842336e+01  1.62243204e+01  1.68175170e+01 -3.16851665e+01
  1.17984371e+00 -1.05535085e+01  5.23529489e+00  2.14209211e-01
  1.08190563e+01  2.21035716e+00  1.50882382e+01  6.80606293e+00
  5.50516834e+01 -2.30125523e+00 -4.63767391e-01  4.21293741e+00
  2.68926423e+00  6.58892711e+00  1.22812706e+01  4.03343154e+00
  3.39359379e+00  1.04462407e+01 -5.33619890e+00 -5.10175091e+00
 -7.07683424e+00  4.14312618e+00 -1.25323370e+01  4.41161760e-02
  2.21865805e+00 -4.58571335e+00 -5.00546667e+00 -1.72470362e+01
  9.32024719e+00 -1.78378378e+01  2.16175949e+00  2.44962248e+01
  1.83171321e+01 -3.21766562e+00 -3.26181408e+00 -1.45443304e-01
 -5.29213620e+00 -1.56588009e+00  1.49610829e+01  1.40350948e+01
 -2.65128620e-02  2.18210350e+01 -1.30672675e+01  1.87330126e+01
  1.27768314e+01  7.06747682e+00  2.96140491e+00  1.15394839e+01
  7.35122938e+00  8.03337710e+00  8.70993837e+00  1.75113086e+01
 -4.71296934e+01  6.81252594e+00 -1.84380169e+01  1.96554482e+00
  1.70513620e+00  1.41748988e+01  4.44130404e+00  1.45390134e+01
  7.89478488e-01  5.25422719e+00  6.64275945e+00 -1.42927642e+01
  1.38551058e+01  2.47075040e+01  2.57318340e+00  7.49696478e+00
  1.06224905e+01  4.18335071e+00 -1.97396991e+00  1.16370769e+01
  3.06250063e+01  1.99390853e+01  2.34597611e+00  6.07996215e+00
  1.36669047e+00  3.51442488e+00  1.20811964e+01  6.97673767e+00
 -1.08660148e+01  6.02294849e+00  5.92784726e+00  1.08003574e+01
  6.88578786e+00 -1.12290862e+01  1.15078463e+01  7.03141265e+00
 -2.02659911e+01 -3.61785059e-01  1.89429051e+01 -8.59119742e+00
  3.31773465e+01  1.86832740e+00  7.29879090e+00  8.81032377e+00
  6.23785452e+00  1.08441158e+01  1.11456540e+01 -3.29669458e+00
  4.93131727e+00 -1.25587392e+01  9.52996596e+00  5.79688444e+00
  6.58555391e+00  9.98003942e+00  8.42083596e+00 -2.41230769e+01
  1.48103212e+01  9.64142629e-01  8.65287198e-01  3.12899106e+00
  3.82102080e+00 -9.31700402e+00  5.10205991e-01  3.19052723e+00
 -8.23055266e+00  6.07218809e+00  3.13099052e+00 -5.30526316e+00
  1.06605376e+01  3.51562511e+00 -5.56439292e+00  1.03288203e+01
  6.99370887e+00 -3.03446151e+00  4.98751528e-01  1.91607380e+01
  3.42424545e+00  6.58550301e+00  5.37164261e+00 -1.66323624e+01
  2.93833502e-01  1.74562005e+01 -2.32441907e+01  1.34259729e+01
  1.69953198e+01 -7.65915784e+00  2.04327672e+01 -2.51065117e+01
  6.74594290e+00  7.23276369e+00  1.54628331e+01 -9.89837787e+00
 -5.14675032e+00  1.65379834e+01  4.00442430e+00  1.22382601e+01
  4.37206985e+00  5.28482205e+00  1.40444235e+01 -1.39063419e+01
 -2.79184886e+00  1.19707325e+01 -8.66449033e-01 -8.51393278e+00
 -4.47981366e+01 -2.87447789e+00 -1.65079153e+00  5.94211823e+00
  1.31293681e+01 -8.83367840e+00  1.36242259e+01  1.16814159e+00
  1.56071797e+01  3.48039173e+01  1.30295476e+01  1.30331514e+00
  2.32493691e+01  8.58409101e+00  9.23447905e+00  9.97191212e+00
 -1.69482767e+01  8.21529352e+00  8.58382131e+00 -5.13655212e+00
  1.46627305e+00  3.80418148e+00 -1.23711354e+01 -2.79797677e+00
  8.06523941e+00  9.24824783e+00  1.73415223e+01  6.02880540e+00
  1.00275192e+01 -1.44853861e+00  2.34595796e+01  2.19283001e+01
  2.13104241e-01  6.27730254e+00  1.39253411e+01 -1.98662281e+00
  5.53291227e+00 -2.30970711e-01  7.06118584e+00 -3.09881858e+01
 -2.61010890e+00  8.54452902e+00  1.00097595e+00  2.94965413e+01
 -1.44033722e+01  1.38340493e+00  7.69653360e+00  3.65691504e+00
  1.99014739e+01  9.47476828e+00  1.10097290e+01  1.48877266e+01
 -8.69891720e+00  9.34768280e+00 -1.15858794e+00  1.66788361e+01]
----------------------------------------------------------------------------------------------------
Unique values in the column 'Volatility' are 

 [1.68715106 2.19788722 1.27364601 1.35767892 1.70116879 1.51649264
 1.11697633 1.12418643 1.06848509 1.04829468 1.10696539 1.16333364
 1.11260424 1.05205031 1.38450167 1.97432252 1.77343079 1.05326602
 1.28379478 2.02292079 1.46003013 1.08926624 2.09306542 1.6302589
 1.22225951 1.16580402 1.46038649 1.4809144  1.51165436 1.10503221
 2.40540795 2.43516482 1.00776167 2.59206524 1.88633452 1.13287498
 1.84717959 1.17152528 0.9000662  1.15590486 1.41868781 1.20452559
 1.07767848 1.39443569 2.55955343 1.82599372 1.20166021 1.38668418
 1.49887213 1.49176424 2.0587686  1.08946885 1.26198423 1.49355294
 0.94484686 1.29785712 0.96019059 1.34723905 2.00082766 2.36818555
 1.18923614 0.92902624 4.55981453 1.18547264 1.697942   1.58839801
 0.93581223 0.89547081 1.55765486 1.32334793 2.47400169 1.47236379
 1.03784428 2.29869617 1.38986704 1.36459176 3.05581758 1.55505705
 1.62621905 1.52219355 1.33812318 1.96886384 1.48736738 1.75065524
 2.69254622 0.88993126 1.44421868 1.57788128 1.55194552 1.15989696
 1.38148979 1.19146592 1.18845397 1.6892346  1.81214432 1.44088445
 1.07040583 1.33792353 1.50756854 1.15079692 1.09672735 1.2116427
 2.92369768 1.40930182 1.07851567 1.0680017  1.08104026 0.92725976
 1.40450816 1.94110389 1.30808151 1.05618603 2.36488263 1.23282885
 1.11842457 1.4520483  1.52142989 1.21740068 1.66648249 1.35159454
 1.0625527  1.57874658 1.18605933 1.15145372 1.41139553 1.32060613
 1.34829666 3.79641004 1.23878468 1.14829451 0.90448658 1.76119277
 1.77445407 1.78166051 2.17573838 1.23985802 2.07521591 2.02681808
 0.93954369 1.39034206 1.49406049 1.57848271 1.34451442 1.17702685
 1.66547459 1.52277794 1.34859719 1.9660615  1.58335507 1.33779254
 1.91490726 1.34173146 1.28228628 2.3985804  1.14733221 1.56037194
 1.10344894 3.40049106 2.37335889 1.07845549 1.01392243 1.59462774
 1.18838275 1.61520603 1.08288064 1.46958571 1.15285453 1.22602189
 1.3016302  1.13979942 1.30138165 1.12600938 1.14286861 1.58083869
 1.21837263 1.73299014 1.84176674 1.13033734 1.22468825 0.87040465
 3.13935157 0.88991256 2.07163924 1.20403738 1.56916714 1.60312963
 1.42723709 1.51343434 1.44062152 0.90309766 1.11584212 1.5542353
 1.53629044 1.45701312 1.6097448  1.09587575 1.17777601 1.16932806
 1.64244991 1.4283592  1.921708   0.73316318 1.26879979 1.32154764
 1.13865048 1.49247842 1.71840329 1.03222106 2.16414979 1.03416246
 0.98269841 1.58594449 0.95900798 2.83067523 1.98937101 1.27846009
 3.32538642 1.38038978 1.11537571 2.85118007 2.29930409 2.23082675
 2.50943706 1.56325826 1.02337505 2.53605034 2.60594879 2.42152915
 1.19849259 1.95202036 2.1688136  1.28156631 1.46061929 1.64129973
 1.10458128 3.56017767 1.0663693  1.08937038 1.58951974 1.1328129
 1.25961075 1.4395637  1.03980326 1.26834034 1.18066131 0.80535713
 1.2387481  1.52898492 0.80605597 1.08689787 1.69475119 0.86145337
 1.12053368 1.8759105  1.14342144 1.5330026  1.10905888 1.22746706
 1.37958859 2.95429144 1.13123977 1.92575419 1.94596571 1.5565117
 1.80234528 1.14237004 1.05880661 3.71299533 0.83982097 1.26623967
 1.45693998 2.03078573 1.58011699 1.42648779 1.09196684 1.7738653
 0.8950593  1.13554603 1.08085768 1.20381569 1.12644779 1.43793764
 1.44464394 2.01739436 4.58004173 1.83502828 1.13816285 0.85944183
 1.21780338 2.73065911 1.79726923 1.02296759 1.24775112 1.57834356
 0.95936484 1.43110855 1.58671931 1.85413193 1.57924824 1.26347939
 1.75882399 1.74760571 1.15790642 2.0486974  1.48234857 1.10284754
 1.43029672 0.82640811 0.9493961  1.0348433  1.6269339  1.84570997
 1.0197243  1.45401865 1.37947984 2.45653493 1.4449241  0.8425918
 1.04461471 1.10303264 0.96977356 2.39780299 0.94036597 3.71955968
 1.27305085 1.33806702 1.33191818 3.79478323 2.3979403  1.0150524
 0.99101052 1.37006187 1.00723035 1.86668025 1.16631103 1.84514878
 1.47887743 1.40420566 1.46817588 1.61028462]
----------------------------------------------------------------------------------------------------
Unique values in the column 'ROE' are 

 [135 130  21   9  14  10  30  11   2  15   3  35 601  18  25  22   4  19
  23 917  52  24   8  29  82   6  12  38  17  20   7  27  16 687  44 589
 463   1  42  64 205  26   5  13 155  28  98  34  41  51  92 228  36  33
 582 116  68  63 263 167 103 182  61  43 244  73  45  47  32 121  40  48
 596 200 196  37  59 109  60 174  86 142]
----------------------------------------------------------------------------------------------------
Unique values in the column 'Cash Ratio' are 

 [ 51  77  67 180 272  49  25  14   9  99  47 225  13  74  45 195 131  37
 362  39  58   1  70  80  22 175 163   4  24 128  82  84 133  10  53  12
  36  20 333  38   0  27 237  48  43   3 182  52  11   8  31  60  26  79
 271   2  15 164 201  44 257  94  29  35 958   5  18  81  73 190 496 148
  33 121  30  16 189  92 103  41  40 162 317 130  23 108   7  42  54  61
  46 260 183  17 136 568  62  71  57 117   6 198  65  21 147  64  34 110
 184  68 129  19 116  88 212 115 126  56 127 221 425  83 459 100]
----------------------------------------------------------------------------------------------------
Unique values in the column 'Net Cash Flow' are 

 [  -604000000     51000000    938000000   -240840000    315120000
   -189000000     90885000    287000000     13900000   -308000000
   -129000000     21818000    -30351000    166000000     50823000
  -2276034000    -34000000   -162000000    -90800000     66000000
   1795000000      3390000     13200000    413000000   -281000000
      7194000   1333000000     -1300000    -38200000     10000000
    698000000  -6430000000    768300000     42000000  -3025000000
   -108953000    218000000     22000000    474000000   -431000000
  20764000000   -712000000   1386000000     -9600000    584000000
    148900000   -433000000     32600000  -3186000000   -268000000
   -220100000  -1039361000 -11208000000   -881000000   1120000000
   -200481000      3190000   1064000000    758700000  -1710600000
   -191000000    -93000000  -3283000000     39289000      2000000
    548000000    -47000000   -119000000     76000000    326500000
   -171460000   -590000000     39000000    150000000    781000000
    -20440000     -8796000    -41000000     -2000000    115100000
    108369000    -22000000  -1763000000    228529000    289000000
   -116000000  -1610000000    375200000   2288000000    -59000000
  -2214800000    848000000     23000000   -325000000     22239000
     46300000   -319396000    683000000  -1179000000    533875000
    830000000  -4496000000   -116800000    249000000    -35000000
     29000000     79000000  -1368707000   1617921000      2196000
    523803000    -14756000      4073000    450000000   -513000000
    -71065000     64600000   4624000000   -119311000    273599000
     28136000   3515000000     14523000    592000000     46600000
   -240000000     46000000    194800000    -19000000    -58589000
    -43239000    -83906000    -30900000    -26905000   -355228000
    254000000  -1603000000    -15576000   2824000000   -809000000
  -3857000000     73901000   -363198000   -685000000     63492000
   7786000000     83583000   -373409000    175000000   -112818000
    162690000    272000000     49000000   -184471000  -1504000000
   7523000000   2300000000     13065000    -17388000   -445000000
    -28325000    636000000   -790000000   -193542000   -296585000
  12747000000   -831000000   -157700000      2448000    114300000
   -900000000    412000000      -395000   -271788000   -218700000
  -7341000000      2212000   -170000000    -86000000  -1649000000
   -211400000    -79600000   -123369000    136400000    -27208000
   -235000000   -205200000   -356000000    -51100000   -638127000
    301000000    274000000   -107000000    610000000     10906000
      1603000     -8000000     85000000    -78836000   5607600000
    537900000    239000000   1944000000    -16185000    403700000
     35300000     59758000   -584000000    -99000000   1805094000
   -952000000  -1098300000   -367000000   1083000000  -1177000000
     -5317000     13624000   -910125000   1010500000    151000000
   -155000000   -126000000     -6000000    379000000    695722000
     -9000000     84000000  -1456000000    128000000   3394000000
    915325000     75400000     36442000    -75150000    217100000
   -134259000   -588000000   -298400000   -403561000    278800000
    -28000000  -1671386000   2962000000    298000000    700900000
    160383000    116000000   -533785000   1735000000   -295000000
     15900000     31884000    625000000   -563000000   2694000000
  -2133000000    -61744000     21000000   -808000000     10853000
    -67676000    -62542000    168081000        23000    -42800000
    615000000     73000000    165012000    -26010000   -654720000
    694000000     88852000  -1016000000     33398000   -167000000
  -2630000000   -648000000    237800000    -38000000    497000000
   1584000000  -3482000000   -150300000      5000000     10716000
     -4636000   -891400000    159000000      6000000     12679000
    250000000    -58000000    100145000   -199000000   -463323000
   1004000000     -8482000     29159000   3428000000     10400000
   -195000000    439000000   1630000000     -3800000    425000000
    142787000    637230000     98989000     37051000     89509000
     -1803000  -6128000000     65488000    -12100000   -460000000
   -254000000  -1268000000   -140000000   -467300000   -568000000
    -12000000   -102075000    373520000      5332000    734422000
   -911000000    133000000    -43000000     17000000  -1032187000
    376000000    -43623000]
----------------------------------------------------------------------------------------------------
Unique values in the column 'Net Income' are 

 [  7610000000   5144000000   4423000000    629551000    696878000
   1849000000    596541000    636000000   2052300000   2533000000
   2196000000    248710000    141555000    356800000    321406000
    334906000    848000000   2171000000    153900000    144000000
   1377000000    590859000    516000000   6939000000   1562000000
    685074000    596000000    442600000   2560000000   1385000000
 -23528000000  -6692000000    763500000   -322000000    892000000
    741733000   1364000000    476000000   5163000000   5176000000
  15888000000    968000000   2084000000    135400000  -1967000000
   3547000000   3158000000    280900000   1565000000   -239000000
    609700000    583106000  17242000000   2512000000   2834000000
    547132000   1520992000   1757000000   1602000000    664900000
    840000000    410400000 -14685000000    509699000   -271000000
   2094000000    634000000   1384000000    521000000   1247000000
    475602000   1399000000    537000000    355000000   -692000000
   4050000000   -113891000    203523000   1968000000    878000000
   1623600000    319361000   5237000000   4587000000     65900000
   1899000000   4526000000   1953000000   1940000000   2297000000
    709000000   3357400000   8382000000   1034000000   1450000000
    296689000    168800000    869829000    764000000   2816000000
    269732000 -14454000000   1725000000   1002100000   1193000000
    429100000   1117000000  -4524515000    187774000    870120000
     85171000    878485000    232120000    268000000   1979000000
   -156734000    494900000   2269000000    457223000    764465000
    394950000   7373000000    516361000   3669000000    315000000
 -12156000000    578000000    650800000    712000000    241686000
    412512000    267669000    489000000    210219000    546421000
   -196000000   2965000000   1374561000  18108000000   1339000000
   9687000000    705672000    456227000    307000000    768996000
   -671000000    451838000    692957000   2129000000    849073000
   -559235000  -3056000000   1682000000    752207000   4768000000
   2461000000   4554000000    686088000    479058000    558000000
    512951000   1276000000  13190000000    192078000    419247000
  11420000000    938000000    454600000    123241000    588800000
    968100000    427235000    302971000    633700000  24442000000
    894115000   1013000000    253000000   7351000000    483500000
    329200000    802894000    436900000    423223000   -240000000
   2408400000   3605000000    388400000    252111000   2181000000
   3433000000   4476000000   3808000000    350745000    487562000
    859000000    369416000   4529300000    941300000   7267000000
   5310000000    615302000    653500000    401600000    288792000
   1599000000   4833000000    546733000   5241000000   1000400000
   2852000000   4442000000  -2204000000   1079667000    352820000
  -2270833000    847600000    997000000  -2441000000    428000000
   2752000000    220000000    122641000  -3362000000    570000000
   -769000000   1556000000    973800000    357659000    350000000
    283766000    244977000   1093900000    931216000  -7829000000
    260100000    407943000   1604000000    888000000   2551360000
   1679000000   5452000000   6960000000   1234000000    636056000
   1267600000    494090000   6873000000   4106000000    -76400000
    437257000   1406000000    682000000   5642000000   4227000000
    321824000   1547000000   1228000000    304768000    665783000
    357796000    696067000   -713685000    749900000    746000000
   1447000000    196000000    225400000   1053849000    284084000
    606828000   2421000000   2139375000   1156000000    267046000
   1350000000   1933000000   1980000000    798300000  -4556000000
   2214000000   1439000000  13345000000    359500000   -214000000
    459522000    527100000   1975400000    198000000   3439000000
    410395000   1220000000   1540000000    369041000   2986000000
    232573000   7340000000    340383000    680528000   5813000000
    867100000   4772000000   4844000000   7608000000    411500000
   3990000000    221177000    760434000    507577000    375236000
   -556334000    419222000  17879000000    469053000    640300000
  22894000000    783000000    753000000   -571000000    837800000
    506000000    612000000    195290000  -2408948000    984485000
   1201560000  16150000000    251200000    474000000    340000000
  -4359082000   1293000000    147000000    309471000    339000000]
----------------------------------------------------------------------------------------------------
Unique values in the column 'Earnings Per Share' are 

 [ 11.39    3.15    2.94    1.26    0.31    2.99    8.91    2.6     3.13
   5.88    1.69    1.52    2.08    2.07    1.8     3.01    6.61    5.12
   1.6     0.68    1.13    2.46    9.49    9.15    8.6     1.42    1.28
   3.93    9.73    4.93  -61.2   -13.18    2.47   -0.31    1.21    5.54
   2.86    2.66    3.9     7.52    4.18    1.78    2.59   -4.49   15.38
   2.73    2.05    0.94   -0.18    2.72    3.79    5.41    3.54    8.71
   1.64    4.44    2.26    2.02    2.97    1.55  -22.43    3.52   -2.43
   8.17    3.87    1.53    2.93    3.71   15.3     7.86    1.9    -1.61
   7.15   -0.28    1.79    2.      1.58    2.67    2.01    4.66    0.54
   3.21    5.68    2.17    4.03    5.14    4.92    4.81    4.95    5.08
   1.56    4.68    5.52    4.      4.05    1.27  -35.55    1.43    3.38
   4.07    3.61    5.71   -8.29    3.25    2.37    0.56    2.77    3.5
   0.92    4.25   -0.99    2.3     2.685   2.42    5.87    1.86    1.77
   1.31    1.97  -11.31    1.37    2.22    3.04    1.73    2.85    3.66
   5.42   -0.29    9.23   12.37    1.02    6.11    4.65    2.39    1.14
  11.69   -0.79    0.82    2.35   -1.21  -10.78    3.28    5.78    0.22
   8.54   13.48    5.19    2.41    2.25    1.11    0.58   15.87    5.16
   3.69    1.62    6.05    2.78    0.1     4.41    2.31    5.03    3.03
  -2.97    2.27   11.62    3.36    0.74    3.3     9.71    9.62    3.08
   3.22    1.03    1.08    4.82    4.7     4.49    4.61    3.14    4.31
   7.72    2.79    5.29   -3.26    7.22   12.75  -13.03   -6.07    2.56
   0.43    0.29  -21.18   -1.99    5.13    1.3     1.09    1.17    4.43
   9.32  -10.23    0.86    2.04    4.52    1.81   50.09    3.32    4.11
   2.16    1.38    4.42   -0.42    3.94    5.18    1.01    7.78    1.59
   5.39    1.      5.75    6.17    6.92   -4.29    2.14    5.22    1.04
   1.63   11.38    4.26    3.02    5.43    3.62    4.53    4.21    3.82
   1.94   -1.53    4.96   10.99   12.5     1.98   19.52    6.89    6.1
   3.51    5.51    5.38    8.72    4.13    8.      1.66    3.07    3.29
  -2.31    4.38    5.7     2.36    9.95   -0.76    0.89    1.93  -25.92
   4.22    3.85    0.42    1.88   -4.64    0.78    1.2  ]
----------------------------------------------------------------------------------------------------
Unique values in the column 'Estimated Shares Outstanding' are 

 [6.68129938e+08 1.63301587e+09 1.50442177e+09 4.99643651e+08
 2.24799355e+09 6.18394649e+08 6.69518519e+07 2.44615385e+08
 4.21897810e+08 4.30782313e+08 1.29940828e+09 1.63625000e+08
 6.80552885e+07 1.72367150e+08 1.78558889e+08 1.11264452e+08
 1.28290469e+08 4.24023438e+08 9.61875000e+07 2.11764706e+08
 1.21858407e+09 2.40186585e+08 5.43730242e+07 7.58360656e+08
 1.81627907e+08 4.82446479e+08 4.65625000e+08 1.12620865e+08
 2.63103803e+08 2.80933063e+08 3.84444444e+08 5.07738998e+08
 3.09109312e+08 1.03870968e+09 7.37190083e+08 1.33886823e+08
 1.04405594e+09 1.78947368e+08 5.06660363e+08 6.88297872e+08
 8.45069512e+08 5.43820225e+08 8.04633205e+08 7.52222222e+07
 4.38084632e+08 2.30624187e+08 1.15677656e+09 1.37024390e+08
 1.66489362e+09 1.32777778e+09 2.24154412e+08 1.53853826e+08
 3.18706100e+09 7.09604520e+08 3.25373134e+08 3.33617073e+08
 3.42565766e+08 7.77433628e+08 7.93069307e+08 2.23872054e+08
 5.41935484e+08 1.31118211e+08 6.54703522e+08 1.44800852e+08
 1.11522634e+08 2.56303550e+08 1.63824289e+08 9.04575163e+08
 1.77815700e+08 3.36118598e+08 3.10850980e+07 1.77989822e+08
 2.82631579e+08 1.18729097e+08 4.29813665e+08 5.66433566e+08
 4.06753571e+08 1.40335196e+08 9.84000000e+08 5.55696202e+08
 6.08089888e+08 1.58886070e+08 1.12381974e+09 1.86463415e+09
 1.22037037e+08 5.91588785e+08 7.96830986e+08 9.00000000e+08
 5.32235888e+08 4.46887160e+08 1.44105691e+08 6.98004158e+08
 1.69333333e+09 2.85433071e+08 1.90185256e+08 3.60683761e+07
 1.57577717e+08 1.91000000e+08 6.95308642e+08 2.12387402e+08
 4.06582278e+08 1.20629371e+09 2.96479290e+08 2.93120393e+08
 1.18864266e+08 3.56869010e+08 1.48511384e+08 5.45779855e+08
 5.77766154e+07 3.67139240e+08 1.52091071e+08 3.17142599e+08
 6.63200000e+07 2.91304348e+08 4.65647059e+08 1.58317172e+08
 2.15173913e+08 2.99887089e+08 1.88935124e+08 1.30232538e+08
 2.49968354e+08 3.96397850e+09 2.91729378e+08 2.80076336e+09
 1.59898477e+08 1.07480106e+09 2.93153153e+08 2.34210526e+08
 1.39702890e+08 1.44741053e+08 1.33168657e+08 1.33606557e+08
 6.91509868e+07 1.00815683e+08 6.75862069e+08 3.21235103e+08
 1.58299351e+08 1.46386419e+09 1.31274510e+09 1.58543372e+09
 1.51757419e+08 1.90889958e+08 2.69298246e+08 6.57823781e+07
 8.49367089e+08 1.25162881e+08 4.14202335e+08 3.61307660e+08
 4.62177686e+08 2.83487941e+08 4.15308642e+08 2.02751213e+08
 7.80360066e+08 5.13987730e+08 1.99237805e+08 8.28820069e+07
 2.53636364e+09 1.49414520e+08 9.78486647e+08 9.27913043e+07
 8.07797688e+07 4.73858921e+09 4.16888889e+08 4.09549550e+08
 2.12484483e+08 3.71014493e+07 3.68023256e+08 4.28362832e+08
 1.15781843e+08 1.25194628e+08 3.91172840e+08 4.04000000e+09
 4.44833333e+08 3.64388489e+08 2.53000000e+09 4.34970414e+09
 1.09637188e+08 1.42510822e+08 2.07466150e+08 1.78246546e+08
 2.13598256e+08 8.08080808e+07 1.06096916e+09 3.10240964e+08
 1.15595238e+08 3.40690540e+08 6.60909091e+08 3.53553038e+08
 4.65280665e+08 1.13333333e+09 7.95340136e+07 2.66770186e+08
 3.44660194e+08 3.42051852e+08 9.39688797e+08 2.00276596e+08
 1.61848552e+09 1.15184382e+09 2.37568340e+08 1.27898089e+08
 6.70051044e+07 5.31229236e+08 6.26036269e+08 1.46954178e+09
 1.96292135e+09 3.58566308e+08 5.39130435e+08 2.81139240e+09
 6.76073620e+08 1.49538366e+08 2.76721569e+07 1.74277283e+08
 3.74812030e+08 4.02141680e+08 1.67187500e+08 4.50409165e+08
 5.11627907e+08 4.22900000e+08 1.58734655e+08 3.67741936e+08
 3.86432161e+08 3.03313840e+08 2.41637717e+08 3.22215315e+08
 2.69230769e+08 2.60335780e+08 2.09382051e+08 2.46930023e+08
 9.99158798e+07 7.65298143e+08 3.02441860e+08 1.99972059e+08
 3.54867257e+08 4.90607735e+08 5.09355161e+07 5.05722892e+08
 6.15929204e+09 3.00243309e+08 4.91391569e+08 5.86851852e+08
 3.58036232e+08 1.55497738e+09 5.46010638e+08 1.81904762e+08
 1.10978934e+08 2.71428571e+08 6.75247525e+08 4.56103476e+08
 5.43316195e+08 2.02405031e+08 2.87012987e+08 1.22800000e+09
 5.30031304e+07 2.19730363e+08 1.03088493e+08 1.31542647e+08
 1.00587717e+08 1.66360140e+08 3.50420561e+08 1.42911877e+08
 1.39134615e+09 1.38282209e+08 9.26053603e+07 2.78513726e+08
 1.29664103e+08 9.31153846e+08 3.63839286e+08 2.71361502e+08
 8.84258278e+07 2.48618784e+08 5.33977901e+08 4.37086093e+08
 1.89619952e+08 8.32330827e+08 3.76701571e+08 5.63080169e+09
 1.85309278e+08 1.39869281e+08 2.25255882e+08 1.25201900e+08
 3.98266129e+08 1.43478261e+08 3.12920837e+08 1.35443894e+08
 1.23200000e+08 1.86384343e+08 3.76024590e+08 2.61833077e+08
 9.87703919e+07 9.52950820e+08 2.47037037e+08 8.66061706e+08
 9.00371747e+08 8.72477064e+08 9.96368039e+07 4.98750000e+08
 1.33239157e+08 2.10646537e+08 1.65334528e+08 1.14053495e+08
 2.40837229e+08 3.32715873e+08 4.08196347e+09 8.22900000e+07
 2.71313559e+08 5.47703349e+09 7.86934673e+07 4.53614458e+08
 7.51315790e+08 5.68539326e+08 1.18146718e+08 1.01186528e+08
 9.29378086e+07 5.07466495e+08 2.84729858e+08 4.19480520e+09
 1.12857143e+09 1.80851064e+08 9.39457328e+08 4.35353535e+08
 1.88461538e+08 2.57892500e+08 4.98529412e+08]
----------------------------------------------------------------------------------------------------
Unique values in the column 'P/E Ratio' are 

 [  3.71817366  18.80634984  15.2755102   74.55555714 178.4516129
  12.26755853  31.04040483  16.62692308  18.45654341  10.18707517
  36.66863964  26.33552566  38.72115433  19.77777729  29.23888944
  18.60797276  12.18003056  12.12695313  41.19999875 280.5147059
  16.52212389  21.78455285  16.83456217  17.74098383  12.37441837
  68.27464577 528.0390742   15.18066158  14.33093546  18.70385375
  93.0892875   21.14574899  18.68760706  31.99173471  33.236463
  18.24940665  22.46240602  10.26350566  19.22739309  13.00478493
  21.43258539  14.59845598 105.2444456   19.91872601  15.09890147
  35.47805024  73.18085213  31.46896164  15.89338235  33.6517153
   9.56561922  19.19773983  13.41561401  21.08536707  19.47072005
  24.10619469  59.2871297   13.74074108  16.89677484  13.55910495
  28.40792888  17.61931818  20.81987609  17.91064896  15.28940517
  43.54248562  14.27645119  24.42048464  31.36274549  11.19720127
  18.98947474  22.01003278  17.31307587  10.0951049   33.99441229
  12.9750005   15.92405063  22.47940075  37.63681692  20.98068605
  36.56910528 171.9629648   21.07165078   8.9242956   30.69124332
  14.84223297  10.43190642  14.45934939  14.63970579  21.22828323
  16.87598484  48.4743609   22.20726496  11.10688424  23.29999925
  17.62716025  54.88976299  19.21678322  33.8402358   15.79115405
  30.85041634  18.91693259  11.82311769  93.046152    34.42615865
  18.4368231   68.40285829  32.21739022  12.24470612  34.33913174
  18.63636281  21.17546899  55.82911329   7.57526882  23.06214689
  79.89313282  28.17258883  22.81195132  23.16058394  27.2972964
  30.08552599  16.22543353  16.5684214   20.93532438  10.6912571
  48.0592125   12.17527638  14.51898734  14.88190693  47.36697339
   8.18027502  17.92156961   5.56628445  18.47096753  15.55230042
  28.65789298  17.33019641  18.65928006  13.48780488  13.15758696
  28.94893574  10.73086395  12.23450108  16.95090016  25.30952381
  24.07012104  27.36851246  69.72727273  20.90280972  10.20919844
  35.22705217  23.05202293  14.29460622  16.755556    20.97297387
  46.56896552  34.41461708  17.96124031  14.81415929  19.88075908
  17.33471116  17.03703704  10.91404942  13.16417861  45.79136799
 149.2         25.42011775  16.93197234  18.19047619  12.63824289
  15.90093725  37.11894361   9.29315491  23.49999865  13.04848515
   5.59835232   9.03326424  28.97619077  20.59183628  26.1980526
  27.47572718  25.15740741  24.51037324  21.34893532   9.98663697
  10.45770043  73.12355174  27.24840701  31.68909559  18.42192724
  19.51295324  21.80149775   9.88888889   9.79962193  33.43037975
  16.78393352  26.59843176   4.30451128  22.72265547  17.00327316
  41.8372093  394.4137828   30.06451484  16.48927797  17.88833648
  36.30630541  33.90769385  21.07692308  17.07900767  27.19098691
  18.77906977  10.12254902  10.48672611  29.38673978  25.45318329
  11.65361416  26.93261402  28.5663708   10.94403893  14.72222176
  12.91304348  19.88914118  12.67420186  14.57922079  16.36548299
  19.07722008  33.7920802    6.58124527  10.5141392   12.73584906
  18.99814508  36.200001     9.88347861  33.40263993  87.98541248
  17.33088199  27.42629957  20.5560757   11.58812299  31.66346154
  82.55172759  27.36196196 110.7647088   11.79700833  17.99615423
  33.06802755  23.14084554  39.93377417  11.83425414  14.64900684
  11.43233083  24.32984346  48.4123701   12.50980392  13.57719715
  28.59879153  61.77536232  10.26933585  28.21782178   8.42960024
  25.15151465  19.16433601   2.93545077  28.9         17.34252511
  19.28524574   9.48433077  14.19237695  17.88661766  11.01720183
  19.56416538   8.83874987  57.21084398  27.68975042  25.0423443
  26.55319179  39.60292786  44.78571429  10.55251164  23.61052667
  21.74152585  14.76080352  32.15060181  10.98773006  33.68539326
  14.02509691  35.84974197  18.51030928   9.28436019  20.24675247
  19.41489362  17.68221394 131.5256359   22.74999917  70.47058529]
----------------------------------------------------------------------------------------------------
Unique values in the column 'P/B Ratio' are 

 [-8.78421945e+00 -8.75006804e+00 -3.94171377e-01  4.19965109e+00
  1.05980998e+00  7.49683072e+00  1.29064585e+02 -7.19496855e-01
 -3.02264878e+00 -1.88391201e+00 -4.32713829e+00 -1.26933216e+00
 -4.07261517e+00 -9.85570628e+00  4.28235752e+00 -1.36497235e+01
 -1.11465802e+00 -8.77452891e-01 -1.41713889e+01  3.85775599e+00
 -4.49034237e+00 -3.10153798e+01  2.40123217e+01 -1.33983799e+01
 -2.08135771e+01  3.90442953e+00 -7.97010393e+00 -3.10067734e+01
 -7.75985560e+00  4.97080925e+00 -1.28609384e+01  8.20292338e+00
  2.63981367e+00  2.90291480e-01 -3.08947652e+00  3.95497461e+00
 -4.89529412e+00 -6.09073508e-01  2.20326121e+01 -9.38006774e-01
  8.63704546e+00 -8.52562380e-01 -4.12776957e+00  1.34905440e+01
  1.62602199e-01 -3.32129829e+00 -3.89565682e+00  5.88025559e-01
 -3.88092050e+00  1.04481548e+00 -1.16753335e+00  6.26405255e+00
 -1.74661009e+01 -3.41530183e+00 -1.06666788e+01 -7.47716562e+00
 -4.32005119e+00 -3.93528350e-01 -6.30960570e-02 -9.42813353e+00
 -1.84052775e+00  1.11780419e+00 -7.61190775e+01 -8.80528127e+00
 -5.48323699e-01 -5.86495365e+01  1.72013290e+01  2.14394282e+01
  6.36871510e-02 -1.30549296e+00  5.16502890e-01 -7.25643348e-01
 -2.23147395e-01  8.55095541e-01  9.02439024e-01 -1.33832119e+01
  7.12164449e+00 -1.76501314e+00 -7.01980905e+00  4.76393721e+00
  5.67399059e+00 -7.60494471e+00 -1.67300221e+01  3.25222222e+00
  6.27728687e+00 -3.75933827e-01 -4.55221439e+00 -1.37592304e+01
 -3.98503937e+00 -6.62151724e-01 -7.48931346e+00 -1.18774408e+01
 -2.29343975e+00 -1.27172775e+01 -4.42681108e+00  1.96252695e+00
  1.78561644e+00  4.60169855e+00 -1.49288674e+01 -8.11682125e+00
 -6.36928380e+00 -1.23088208e+01  1.41624318e+00  2.38567280e+01
  9.56795153e+00 -1.16983338e+00 -5.97313433e-01 -8.63959070e+00
  6.17402389e+00  6.34974742e+00 -1.71588003e+00  5.99145874e+00
 -4.41034942e+01 -1.41514453e+01  5.10875627e+00  4.42742519e+00
  5.88446716e+00 -2.10070794e+00  2.93542695e+00 -6.07256055e+00
 -1.90866103e+01 -7.97573034e+00  4.01471293e+00  1.49926228e+01
  6.74676025e+00  5.10154601e+00 -3.97339544e+00  2.25637911e+01
  1.04977041e+01  4.24299831e+00  3.15944610e+00  3.61761016e+00
 -4.89203675e+00  7.20524245e+00  5.76005679e+00  3.83589577e+00
  1.21128792e+01  1.73458569e+01  1.21453261e+01 -6.50573700e-02
 -7.27905120e+00 -3.73804696e+00  6.26481675e+00  6.06938909e+00
 -3.70982592e+00 -1.98048307e+00  5.92567697e+00 -1.13548387e-01
  4.85239120e+00 -9.81083310e-01  5.04769952e+00  6.12393390e+00
  2.65657721e-01 -2.76365122e+00  4.26075000e+01  7.58647709e+00
  4.21861998e+00  2.82384519e+00  6.29494262e+00  2.75223607e+00
 -1.88688119e+00 -2.53301086e+00 -1.89407115e+00 -1.46630663e+00
 -2.01209100e+00  2.93100547e+00 -3.07831974e-01 -1.29484372e+00
 -8.57290222e-01  1.42807500e+01 -6.51102807e-01 -1.08528544e+01
 -4.60659114e+00  1.98214162e+01 -5.11719395e+00 -2.24577338e+00
  1.03163539e+01  3.45176471e+00 -1.23701979e+01  2.21957746e+00
  4.53525099e+00  7.12214514e+00  8.61558483e+00 -1.28095060e+01
 -3.98031573e+00  6.49575517e+00  3.05088697e+00 -1.95019387e+00
  2.02384440e+00 -5.19073368e+00 -6.63297081e+00  5.84661735e+00
  5.79822581e+00 -4.28293111e+00  1.27352995e+00  4.40399354e+00
 -1.29800623e+00 -4.21330891e+00 -1.88094283e+00  1.17122901e+00
 -1.17173832e+01 -7.35331395e+00  6.97186364e+00 -5.70016789e+00
 -1.38596074e-01 -1.23755263e+01  9.58253576e+00  9.26433162e-01
  1.11681066e+01 -2.07554286e+00 -8.02511003e+00 -1.04640982e+01
 -3.64026219e-01  3.34510155e+00 -4.26858900e-01 -7.33207433e-01
  6.29052120e+00 -1.12105856e+00 -1.05242872e+00 -3.61858249e-01
 -4.52699514e+00 -2.25674696e+00 -8.43313348e-01 -1.41802706e+00
 -6.94125670e-01 -6.57486911e+00 -6.08922771e+00 -5.93157895e-01
 -2.82711144e+00 -4.17892734e+00  7.02905607e+00  4.29189430e+00
  5.74886878e-01  5.43403909e+00 -1.20208938e+01 -1.57274805e+01
  2.04089995e+01  4.08947221e+00 -1.62154690e+01  5.25089724e-01
 -2.42822510e+00 -4.01646113e+00 -1.30089841e-01 -2.58040816e+00
 -2.71690772e+00  2.82536561e+00 -7.96157903e+00 -2.79545642e+00
 -1.88641943e+01 -8.54722222e+00 -2.48137610e+00 -4.04496970e+00
  7.41377678e+00 -8.42213189e-01  7.02678249e+00 -2.35373233e+01
 -2.53851293e+01  4.06808411e+00 -1.27265533e+01 -2.80325119e+01
  2.62757576e+00 -8.91599302e-01  6.01095386e+00  4.59415584e+00
 -2.34739137e+00  2.76805090e+00 -2.31952916e+01  6.25590309e+00
  1.06689857e+00  1.06955822e+00 -1.31980547e+01  9.47139976e+00
  1.52621554e+01 -2.66190517e-01 -1.08191192e+00 -1.36174399e+01
  4.07654319e+00  2.55967070e+00 -4.04075101e+00 -2.63806868e+01
  2.95471503e+01 -1.85099485e+00 -4.50863346e+01 -1.41529880e+00
 -1.45611208e+01 -8.04377178e+00  2.28480237e+00 -1.02499673e+01
  1.26957118e+01  7.18612812e+00 -2.26192667e+00 -7.76267729e+00
 -2.70644272e+00 -2.95949367e-01  4.13047059e+00  6.26177457e+00
 -3.83825986e+00 -2.38844490e+01  1.72306785e+00]
----------------------------------------------------------------------------------------------------
In [250]:
#Revisión de Datos duplicados
data.duplicated().value_counts()
Out[250]:
False    340
dtype: int64
  • No se tienen duplicados
In [251]:
#Revisión de valores nulos
data.isnull().sum()
Out[251]:
Ticker Symbol                   0
Security                        0
GICS Sector                     0
GICS Sub Industry               0
Current Price                   0
Price Change                    0
Volatility                      0
ROE                             0
Cash Ratio                      0
Net Cash Flow                   0
Net Income                      0
Earnings Per Share              0
Estimated Shares Outstanding    0
P/E Ratio                       0
P/B Ratio                       0
dtype: int64
  • No hay valores faltantes

Análisis exploratorio de datos (EDA)¶

  • EDA es una parte importante de cualquier proyecto que involucre datos.
  • Es importante investigar y comprender mejor los datos antes de construir un modelo con ellos.
  • A continuación se mencionan algunas preguntas que lo ayudarán a abordar el análisis de la manera correcta y generar conocimientos a partir de los datos.
  • Se debe realizar un análisis exhaustivo de los datos, además de las preguntas que se mencionan a continuación.

Preguntas:

  1. ¿Cómo es la distribución de los precios de las acciones?
  2. ¿Las acciones de qué sector económico han visto el máximo aumento de precio en promedio?
  3. ¿Cómo se correlacionan las diferentes variables entre sí?
  4. El índice de efectivo proporciona una medida de la capacidad de una empresa para cubrir sus obligaciones a corto plazo utilizando solo efectivo y equivalentes de efectivo. ¿Cómo varía la razón de efectivo promedio entre los sectores económicos?
  5. Las relaciones P/E pueden ayudar a determinar el valor relativo de las acciones de una empresa, ya que representan la cantidad de dinero que un inversionista está dispuesto a invertir en una sola acción de una empresa por cada dólar de sus ganancias. ¿Cómo varía la relación P/E, en promedio, entre sectores económicos?
In [252]:
# function to plot a boxplot and a histogram along the same scale.


def histogram_boxplot(df, feature, figsize=(12, 7), kde=False, bins=None):
    """
    Boxplot and histogram combined

    data: dataframe
    feature: dataframe column
    figsize: size of figure (default (12,7))
    kde: whether to the show density curve (default False)
    bins: number of bins for histogram (default None)
    """
    f2, (ax_box2, ax_hist2) = plt.subplots(
        nrows=2,  # Number of rows of the subplot grid= 2
        sharex=True,  # x-axis will be shared among all subplots
        gridspec_kw={"height_ratios": (0.25, 0.75)},
        figsize=figsize,
    )  # creating the 2 subplots
    sns.boxplot(
        data=df, x=feature, ax=ax_box2, showmeans=True, color="violet"
    )  # boxplot will be created and a star will indicate the mean value of the column
    sns.histplot(
        data=df, x=feature, kde=kde, ax=ax_hist2, bins=bins, palette="winter"
    ) if bins else sns.histplot(
        data=df, x=feature, kde=kde, ax=ax_hist2
    )  # For histogram
    ax_hist2.axvline(
        df[feature].mean(), color="green", linestyle="--"
    )  # Add mean to the histogram
    ax_hist2.axvline(
        df[feature].median(), color="black", linestyle="-"
    )  # Add median to the histogram
In [253]:
### function to plot distributions wrt target


def distribution_plot_wrt_target(data, predictor, target):

    fig, axs = plt.subplots(2, 2, figsize=(12, 10))

    target_uniq = data[target].unique()

    axs[0, 0].set_title("Distribution of target for target=" + str(target_uniq[0]))
    sns.histplot(
        data=data[data[target] == target_uniq[0]],
        x=predictor,
        kde=True,
        ax=axs[0, 0],
        color="teal",
        stat="density",
    )

    axs[0, 1].set_title("Distribution of target for target=" + str(target_uniq[1]))
    sns.histplot(
        data=data[data[target] == target_uniq[1]],
        x=predictor,
        kde=True,
        ax=axs[0, 1],
        color="orange",
        stat="density",
    )

    axs[1, 0].set_title("Boxplot w.r.t target")
    sns.boxplot(data=data, x=target, y=predictor, ax=axs[1, 0], palette="gist_rainbow")

    axs[1, 1].set_title("Boxplot (without outliers) w.r.t target")
    sns.boxplot(
        data=data,
        x=target,
        y=predictor,
        ax=axs[1, 1],
        showfliers=False,
        palette="gist_rainbow",
    )

    plt.tight_layout()
    plt.show()
In [254]:
# function to create labeled barplots


def labeled_barplot(df, feature, perc=False, n=None):
    """
    Barplot with percentage at the top

    data: dataframe
    feature: dataframe column
    perc: whether to display percentages instead of count (default is False)
    n: displays the top n category levels (default is None, i.e., display all levels)
    """

    total = len(df[feature])  # length of the column
    count = df[feature].nunique()
    if n is None:
        plt.figure(figsize=(count + 1, 5))
    else:
        plt.figure(figsize=(n + 1, 5))

    plt.xticks(rotation=90, fontsize=15)
    ax = sns.countplot(
        data=df,
        x=feature,
        palette="Paired",
        order=df[feature].value_counts().index[:n].sort_values(),
    )

    for p in ax.patches:
        if perc == True:
            label = "{:.1f}%".format(
                100 * p.get_height() / total
            )  # percentage of each class of the category
        else:
            label = p.get_height()  # count of each level of the category

        x = p.get_x() + p.get_width() / 2  # width of the plot
        y = p.get_height()  # height of the plot

        ax.annotate(
            label,
            (x, y),
            ha="center",
            va="center",
            size=12,
            xytext=(0, 5),
            textcoords="offset points",
        )  # annotate the percentage

    plt.show()  # show the plot

1. ¿Cómo es la distribución de los precios de las acciones?

In [255]:
# Distribución de los precios de las acciones?**
histogram_boxplot(data, "Current Price", figsize=(8, 8), kde=False, bins=None) 
In [256]:
data["Current Price"].describe()
Out[256]:
count    340.000
mean      80.862
std       98.055
min        4.500
25%       38.555
50%       59.705
75%       92.880
max     1274.950
Name: Current Price, dtype: float64

El histograma muestra la distribución de los precios actuales "Current Price", Precio actual de la acción en dólares.

La distribución del histograma de los precios actuales sería asimétrico, con una cola más larga en el lado derecho.
Esto se debe a que la mediana (59.705) es menor que la media (80.862). La cola derecha del histograma es más larga que la cola izquierda. Lo cual es de esperar cuando hay más precios altos que precios bajos.

La desviación estándar de la distribución es de 98.055 dólares. Esto indica que la variación de los precios actuales es relativamente alta.

En la distribución de precios actuales, el percentil 25 es de 38.555 dólares. Esto indica que el 25% de los precios actuales son menores que este valor. El percentil 50 es de 59.705 dólares, que es la mediana. El percentil 75 es de 92.880 dólares.

El valor máximo del histograma es de 1.274,950 dólares.

Esto indica que hubo un precio actual excepcionalmente alto. Hay una diferencia importante entre el P75 y el valor máximo.

La desviación estándar es una medida de la dispersión de los datos alrededor de la media. En este caso, la desviación estándar es de 98,055 dólares. Esto significa que, en promedio, los precios actuales de las acciones están a 98,055 dólares de la media. Una desviación estándar alta indica que los precios actuales de las acciones son más impredecibles.

Hay presencia de valores extremos altos.

In [257]:
#Obtener el percentil 75 de los datos y agrupar a las empresas con precios más altos de sus acciones.
percentile_75 = data["Current Price"].quantile(0.75)
mayor_P75 = data[data["Current Price"] > percentile_75]
mayor_P75
Out[257]:
Ticker Symbol Security GICS Sector GICS Sub Industry Current Price Price Change Volatility ROE Cash Ratio Net Cash Flow Net Income Earnings Per Share Estimated Shares Outstanding P/E Ratio P/B Ratio
3 ADBE Adobe Systems Inc Information Technology Application Software 93.940 13.977 1.358 9 180 -240840000 629551000 1.260 499643650.800 74.556 4.200
6 ADS Alliance Data Systems Information Technology Data Processing & Outsourced Services 276.570 6.189 1.117 30 25 90885000 596541000 8.910 66951851.850 31.040 129.065
19 ALXN Alexion Pharmaceuticals Health Care Biotechnology 190.750 22.338 2.023 2 195 66000000 144000000 0.680 211764705.900 280.515 -14.171
22 AMG Affiliated Managers Group Inc Financials Asset Management & Custody Banks 159.760 -6.611 2.093 18 67 13200000 516000000 9.490 54373024.240 16.835 -31.015
23 AMGN Amgen Inc Health Care Biotechnology 162.330 17.163 1.630 25 362 413000000 6939000000 9.150 758360655.700 17.741 24.012
24 AMP Ameriprise Financial Financials Asset Management & Custody Banks 106.420 -2.421 1.222 22 67 -281000000 1562000000 8.600 181627907.000 12.374 -13.398
25 AMT American Tower Corp A Real Estate Specialized REITs 96.950 10.233 1.166 10 39 7194000 685074000 1.420 482446478.900 68.275 -20.814
26 AMZN Amazon.com Inc Consumer Discretionary Internet & Direct Marketing Retail 675.890 32.268 1.460 4 58 1333000000 596000000 1.280 465625000.000 528.039 3.904
28 ANTM Anthem Inc. Health Care Managed Health Care 139.440 -0.620 1.512 11 70 -38200000 2560000000 9.730 263103802.700 14.331 -31.007
35 AVB AvalonBay Communities, Inc. Real Estate Residential REITs 184.130 4.858 1.133 8 47 -108953000 741733000 5.540 133886823.100 33.236 -3.089
36 AVGO Broadcom Information Technology Semiconductors 145.150 17.903 1.847 29 163 218000000 1364000000 2.860 1044055944.000 18.249 3.955
39 BA Boeing Company Industrials Aerospace & Defense 144.590 10.105 1.156 82 24 -431000000 5176000000 7.520 688297872.300 19.227 22.033
43 BCR Bard (C.R.) Inc. Health Care Health Care Equipment 189.440 1.549 1.394 9 82 -9600000 135400000 1.800 75222222.220 105.244 -4.128
45 BIIB BIOGEN IDEC Inc. Health Care Biotechnology 306.350 4.918 1.826 38 133 148900000 3547000000 15.380 230624187.300 19.919 0.163
51 BXP Boston Properties Real Estate REITs 127.540 7.203 1.089 10 47 -1039361000 583106000 3.790 153853825.900 33.652 -1.269
54 CB Chubb Limited Financials Property & Casualty Insurance 116.850 13.194 0.945 10 99 1120000000 2834000000 8.710 325373134.300 13.416 -17.466
58 CELG Celgene Corp. Health Care Biotechnology 119.760 8.449 2.001 27 333 758700000 1602000000 2.020 793069306.900 59.287 -4.320
64 CHTR Charter Communications Consumer Discretionary Cable & Satellite 183.100 3.599 1.698 589 0 2000000 -271000000 -2.430 111522633.700 20.820 -76.119
65 CI CIGNA Corp. Health Care Managed Health Care 146.330 8.682 1.588 17 70 548000000 2094000000 8.170 256303549.600 17.911 -8.805
70 CMG Chipotle Mexican Grill Consumer Discretionary Restaurants 479.850 -33.131 2.474 22 237 -171460000 475602000 15.300 31085098.040 31.363 17.201
77 COO The Cooper Companies Health Care Health Care Supplies 134.200 -9.672 1.555 8 3 -8796000 203523000 1.790 140335195.500 33.994 0.855
82 CVS CVS Health Consumer Staples Drug Retail 97.770 1.327 1.487 14 11 -22000000 5237000000 4.660 1123819742.000 20.981 -7.020
92 DIS The Walt Disney Company Consumer Discretionary Broadcasting & Cable TV 105.080 2.049 1.188 19 26 848000000 8382000000 4.950 1693333333.000 21.228 -3.985
97 DNB Dun & Bradstreet Industrials Research & Consulting Services 103.930 -1.188 1.338 15 38 46300000 168800000 4.680 36068376.070 22.207 -11.877
99 DPS Dr Pepper Snapple Group Consumer Staples Soft Drinks 93.200 18.049 1.151 35 58 683000000 764000000 4.000 191000000.000 23.300 -12.717
104 ECL Ecolab Inc. Materials Specialty Chemicals 114.380 3.784 1.079 15 2 -116800000 1002100000 3.380 296479289.900 33.840 -14.929
106 EFX Equifax Inc. Industrials Research & Consulting Services 111.370 14.531 1.081 19 15 -35000000 429100000 3.610 118864265.900 30.850 -8.117
110 EQIX Equinix Real Estate REITs 302.400 10.020 1.308 7 164 1617921000 187774000 3.250 57776615.380 93.046 23.857
114 ESS Essex Property Trust, Inc. Real Estate Residential REITs 239.410 6.765 1.118 4 47 4073000 232120000 3.500 66320000.000 68.403 -3.089
121 EXPE Expedia Inc. Consumer Discretionary Internet & Direct Marketing Retail 124.300 4.895 1.579 16 29 273599000 764465000 5.870 130232538.300 21.175 -44.103
125 FB Facebook Information Technology Internet Software & Services 104.660 16.224 1.321 8 958 592000000 3669000000 1.310 2800763359.000 79.893 5.884
135 FRT Federal Realty Investment Trust Real Estate Retail REITs 146.100 6.806 1.240 13 47 -26905000 210219000 3.040 69150986.840 48.059 -3.973
138 GD General Dynamics Industrials Aerospace & Defense 137.360 -0.464 0.940 28 22 -1603000000 2965000000 9.230 321235102.900 14.882 4.243
140 GILD Gilead Sciences Health Care Biotechnology 101.190 2.689 1.494 98 148 2824000000 18108000000 12.370 1463864188.000 8.180 3.159
146 GWW Grainger (W.W.) Inc. Industrials Industrial Materials 202.590 -5.336 1.349 34 16 63492000 768996000 11.690 65782378.100 17.330 12.113
156 HON Honeywell Int'l Inc. Industrials Industrial Conglomerates 103.570 9.320 1.103 26 41 -1504000000 4768000000 6.110 780360065.500 16.951 -3.710
160 HSIC Henry Schein Health Care Health Care Distributors 158.190 18.317 1.014 17 3 -17388000 479058000 5.780 82882006.920 27.369 5.926
163 HUM Humana Inc. Health Care Managed Health Care 178.510 -0.145 1.615 12 70 636000000 1276000000 8.540 149414519.900 20.903 -8.805
164 IBM International Business Machines Information Technology IT Consulting & Other Services 137.620 -5.292 1.083 92 24 -790000000 13190000000 13.480 978486646.900 10.209 4.852
166 IFF Intl Flavors & Fragrances Materials Specialty Chemicals 119.640 14.961 1.153 26 25 -296585000 419247000 5.190 80779768.790 23.052 5.048
171 ISRG Intuitive Surgical Inc. Health Care Health Care Equipment 546.160 18.733 1.126 14 317 114300000 588800000 15.870 37101449.280 34.415 42.608
179 KMB Kimberly-Clark Consumer Staples Household Products 127.300 17.511 0.870 582 10 -170000000 1013000000 2.780 364388489.200 45.791 -2.533
185 LH Laboratory Corp. of America Holding Health Care Health Care Facilities 123.640 14.175 1.603 9 42 136400000 436900000 5.030 178246546.300 15.901 -1.295
187 LLL L-3 Communications Holdings Industrials Industrial Conglomerates 119.510 14.539 1.513 6 7 -235000000 -240000000 -2.970 80808080.810 17.335 14.281
189 LMT Lockheed Martin Corp. Industrials Aerospace & Defense 217.150 5.254 0.903 116 8 -356000000 3605000000 11.620 310240963.900 18.688 -10.853
195 MA Mastercard Inc. Information Technology Internet Software & Services 97.360 7.497 1.096 63 130 610000000 3808000000 3.360 1133333333.000 28.976 3.452
201 MCD McDonald's Corp. Consumer Discretionary Restaurants 118.140 19.939 0.733 64 260 5607600000 4529300000 4.820 939688796.700 24.510 7.122
202 MCO Moody's Corp Financials Diversified Financial Services 100.340 2.346 1.269 167 183 537900000 941300000 4.700 200276595.700 21.349 8.616
205 MHK Mohawk Industries Consumer Discretionary Home Furnishings 189.390 3.514 1.492 13 3 -16185000 615302000 2.590 237568339.800 73.124 -3.980
208 MLM Martin Marietta Materials Materials Construction Materials 136.580 -10.866 2.164 7 46 59758000 288792000 4.310 67005104.410 31.689 3.051
210 MMM 3M Company Industrials Industrial Conglomerates 150.640 5.928 0.983 42 27 -99000000 4833000000 7.720 626036269.400 19.513 2.024
217 MTB M&T Bank Corp. Financials Banks 121.180 -0.362 1.380 7 99 -5317000 1079667000 7.220 149538365.700 16.784 -0.938
218 MTD Mettler Toledo Health Care Life Sciences Tools & Services 339.130 18.943 1.115 61 18 13624000 352820000 12.750 27672156.860 26.598 4.404
224 NEE NextEra Energy Utilities MultiUtilities 103.890 6.238 1.023 12 6 -6000000 2752000000 6.110 450409165.300 17.003 -7.353
226 NFLX Netflix Inc. Information Technology Internet Software & Services 114.380 11.146 2.606 6 65 695722000 122641000 0.290 422900000.000 394.414 -5.700
237 ORLY O'Reilly Automotive Consumer Discretionary Specialty Stores 253.420 0.964 1.089 47 4 -134259000 931216000 9.320 99915879.830 27.191 -0.364
243 PCLN Priceline.com Inc Consumer Discretionary Internet & Direct Marketing Retail 1274.950 3.191 1.268 29 184 -1671386000 2551360000 50.090 50935516.070 25.453 -1.052
245 PEP PepsiCo Inc. Consumer Staples Soft Drinks 99.920 6.072 0.805 45 68 2962000000 5452000000 3.710 1469541779.000 26.933 -5.191
252 PNC PNC Financial Services Financials Banks 95.310 6.994 1.121 9 99 -295000000 4106000000 7.520 546010638.300 12.674 -0.694
255 PPG PPG Industries Materials Diversified Chemicals 98.820 19.161 1.533 28 31 625000000 1406000000 5.180 271428571.400 19.077 -0.593
260 PX Praxair Inc. Materials Industrial Gases 102.400 0.294 1.131 35 8 21000000 1547000000 5.390 287012987.000 18.998 0.575
263 RCL Royal Caribbean Cruises Ltd Consumer Discretionary Hotels, Resorts & Cruise Lines 101.210 13.426 1.557 8 9 -67676000 665783000 3.030 219730363.000 33.403 -15.727
264 REGN Regeneron Health Care Biotechnology 542.870 16.995 1.802 17 129 160383000 636056000 6.170 103088492.700 87.985 20.409
266 ROP Roper Industries Industrials Industrial Conglomerates 189.790 20.433 1.059 13 108 168081000 696067000 6.920 100587716.800 27.426 -16.215
273 SHW Sherwin-Williams Materials Specialty Chemicals 259.600 16.538 1.426 121 10 165012000 1053849000 11.380 92605360.280 22.812 2.825
274 SLG SL Green Realty Real Estate Office REITs 112.980 4.004 1.092 4 47 -26010000 284084000 1.020 278513725.500 110.765 -3.089
277 SPG Simon Property Group Inc Real Estate REITs 194.440 5.285 1.136 48 47 88852000 2139375000 5.880 363839285.700 33.068 -1.269
278 SPGI S&P Global, Inc. Financials Diversified Financial Services 98.580 14.044 1.081 596 51 -1016000000 1156000000 4.260 271361502.300 23.141 -4.179
279 SRCL Stericycle Inc Industrials Industrial Conglomerates 120.600 -13.906 1.204 10 9 33398000 267046000 3.020 88425827.810 39.934 -18.864
280 SRE Sempra Energy Utilities MultiUtilities 94.010 -2.792 1.126 11 9 -167000000 1350000000 5.430 248618784.500 17.313 -8.547
286 SYK Stryker Corp. Health Care Health Care Equipment 92.940 -1.651 1.138 17 116 1584000000 1439000000 3.820 376701570.700 24.330 7.027
288 TAP Molson Coors Brewing Company Consumer Staples Brewers 93.920 13.129 1.218 5 35 -150300000 359500000 1.940 185309278.400 48.412 -25.385
292 TMO Thermo Fisher Scientific Health Care Health Care Equipment 141.850 15.607 1.248 9 11 -891400000 1975400000 4.960 398266129.000 28.599 -28.033
294 TRV The Travelers Companies Inc. Financials Property & Casualty Insurance 112.860 13.030 0.959 15 99 6000000 3439000000 10.990 312920837.100 10.269 -0.892
297 TSO Tesoro Petroleum Co. Energy Oil & Gas Refining & Marketing & Transportation 105.370 8.584 1.854 30 37 -58000000 1540000000 12.500 123200000.000 8.430 4.594
303 UHS Universal Health Services, Inc. Health Care Health Care Facilities 119.490 -5.137 2.049 16 6 29159000 680528000 6.890 98770391.870 17.343 6.256
304 UNH United Health Group Inc. Health Care Managed Health Care 117.640 1.466 1.482 17 70 3428000000 5813000000 6.100 952950819.700 19.285 -8.805
307 UPS United Parcel Service Industrials Air Freight & Logistics 96.230 -2.798 0.826 196 44 439000000 4844000000 5.380 900371747.200 17.887 1.070
308 UTX United Technologies Industrials Industrial Conglomerates 96.070 8.065 0.949 28 31 1630000000 7608000000 8.720 872477064.200 11.017 -13.198
311 VMC Vulcan Materials Materials Construction Materials 94.970 6.029 1.846 5 81 142787000 221177000 1.660 133239156.600 57.211 -0.266
312 VNO Vornado Realty Trust Real Estate REITs 99.960 10.028 1.020 11 47 637230000 760434000 3.610 210646537.400 27.690 -1.082
315 VRTX Vertex Pharmaceuticals Inc Health Care Biotechnology 125.830 21.928 2.457 59 221 89509000 -556334000 -2.310 240837229.400 39.603 2.560
318 WAT Waters Corporation Health Care Health Care Distributors 134.580 13.925 1.045 23 425 65488000 469053000 5.700 82290000.000 23.611 29.547
321 WHR Whirlpool Corp. Consumer Discretionary Household Appliances 146.870 -0.231 2.398 17 10 -254000000 783000000 9.950 78693467.340 14.761 -45.086
337 ZBH Zimmer Biomet Holdings Health Care Health Care Equipment 102.590 9.348 1.404 1 100 376000000 147000000 0.780 188461538.500 131.526 -23.884
In [258]:
#cantidad de empresas que con Current Price mayores a P75
mayor_P75.shape[0]
Out[258]:
85
In [259]:
display(mayor_P75.describe().T)
display(mayor_P75.describe(include = 'object').T)
count mean std min 25% 50% 75% max
Current Price 85.000 173.947 160.154 92.940 103.570 123.640 178.510 1274.950
Price Change 85.000 7.106 9.576 -33.131 1.466 6.806 14.044 32.268
Volatility 85.000 1.366 0.403 0.733 1.092 1.240 1.555 2.606
ROE 85.000 48.435 109.447 1.000 10.000 17.000 34.000 596.000
Cash Ratio 85.000 87.200 129.251 0.000 18.000 47.000 99.000 958.000
Net Cash Flow 85.000 239694658.824 997250305.573 -1671386000.000 -108953000.000 21000000.000 413000000.000 5607600000.000
Net Income 85.000 2049712058.824 2883903616.727 -556334000.000 469053000.000 931216000.000 2752000000.000 18108000000.000
Earnings Per Share 85.000 6.245 6.249 -2.970 3.040 5.190 8.600 50.090
Estimated Shares Outstanding 85.000 380542422.439 451340283.611 27672156.860 99915879.830 219730363.000 450409165.300 2800763359.000
P/E Ratio 85.000 45.225 75.064 8.180 17.887 23.611 33.994 528.039
P/B Ratio 85.000 -2.025 21.651 -76.119 -8.805 -1.269 4.200 129.065
count unique top freq
Ticker Symbol 85 85 ADBE 1
Security 85 85 Adobe Systems Inc 1
GICS Sector 85 10 Health Care 22
GICS Sub Industry 85 44 Biotechnology 7
  • Hay 85 empresas que tienen precios de acciones sobre el percentil 75, muy elevados y reportan el mayor crecimiento en las últimas 13 semanas.
  • La media de el precio de las acciones, de las 85 empresas sobre el P75 es de 174 dolares por acción.
  • El sector más frecuente del comercio, de estas 85 empresas es el de Health Care, y la subindustria de la Biotecnología.

2. ¿Las acciones de qué sector económico han visto el máximo aumento de precio en promedio?

In [260]:
# Distribución de los precios de las acciones?**
histogram_boxplot(data, "Price Change", figsize=(8, 8), kde=False, bins=None) 
In [261]:
data["Price Change"].describe()
Out[261]:
count   340.000
mean      4.078
std      12.006
min     -47.130
25%      -0.939
50%       4.820
75%      10.695
max      55.052
Name: Price Change, dtype: float64

La distribución del cambio porcentual de las acciones es asimétrica, "Price Change" con una cola larga en el lado derecho.La media y la mediana están cerca.

La media del cambio porcentual es de 4,078%, lo que significa que, en promedio, las acciones han subido un 4,078%. La desviación estándar del cambio porcentual es de 12,006%, lo que significa que, en promedio, las acciones están a 12,006% de la media.

Esto significa que hay un mayor número de acciones que han subido de precio que de acciones que han bajado de precio.

El valor mínimo del cambio porcentual es de -47,130%, lo que significa que hay algunas acciones que han bajado mucho de precio. El 25% de las acciones han subido menos del 0,939%, el 50% de las acciones han subido un 4,820% y el 75% de las acciones han subido un 10,695%. El valor máximo del cambio porcentual es de 55,052%, lo que significa que hay algunas acciones que han subido mucho de precio, importante tener en cuenta que esto puede ser un evento raro y debe contemplarse.

In [262]:
#Crear dataframe con  features especificas
filtered1 = data[["Security", "GICS Sector", "GICS Sub Industry", "Current Price", "Price Change"]]
In [263]:
# Ordenar el data frame de mayor a menor según el Price Change
mayores = filtered1.sort_values(by="Price Change", ascending=False)
mayores 
Out[263]:
Security GICS Sector GICS Sub Industry Current Price Price Change
136 First Solar Inc Information Technology Semiconductors 65.990 55.052
87 Du Pont (E.I.) Materials Diversified Chemicals 66.600 37.490
293 TripAdvisor Consumer Discretionary Internet & Direct Marketing Retail 85.250 34.804
220 Mylan N.V. Health Care Pharmaceuticals 54.070 33.177
26 Amazon.com Inc Consumer Discretionary Internet & Direct Marketing Retail 675.890 32.268
... ... ... ... ... ...
127 Freeport-McMoran Cp & Gld Materials Copper 6.770 -31.685
70 Chipotle Mexican Grill Consumer Discretionary Restaurants 479.850 -33.131
62 Chesapeake Energy Energy Integrated Oil & Gas 4.500 -38.102
284 Southwestern Energy Energy Oil & Gas Exploration & Production 7.110 -44.798
180 Kinder Morgan Energy Oil & Gas Refining & Marketing & Transportation 14.920 -47.130

340 rows × 5 columns

  • La empresa que experimentó el mayor alza en el aumento de precio de sus acciones es First Solar Inc, del sector económico de la Information Technology, en la sub industria de los Semiconductors. Experimentó un credimiento de 55.052%
In [264]:
# Filtrar los datos para que solo incluyan las filas con un cambio de precio positivo (85 mejores empresas)
P85_75 = data["Price Change"].quantile(0.75)
dmayorPC = data[data["Price Change"] > P85_75]

# Agrupar los datos por sector económico mostrando ls media del cambio porcentual de las acciones
grouped_dm = dmayorPC.groupby("GICS Sector")["Price Change"].mean().reset_index().sort_values("Price Change", ascending=False)
grouped_dm
Out[264]:
GICS Sector Price Change
9 Telecommunications Services 24.708
0 Consumer Discretionary 20.620
6 Information Technology 20.538
7 Materials 19.635
4 Health Care 17.637
1 Consumer Staples 17.045
8 Real Estate 14.748
5 Industrials 13.544
3 Financials 13.393
2 Energy 13.273
In [265]:
# gráfico de barras para las 85 mejores empresas
plt.figure(figsize=(15,8))
sns.barplot(data=grouped_dm, x= "GICS Sector", y="Price Change", ci=False)
plt.xticks(rotation=90)
plt.show()

En general, de las 85 empresas que han experimentado el mayor cambio promedio, en el valor de sus acciones:

  • Telecommunications Services, Consumer Discretionary e Information Technology son los sectores del comercio con mayor crecimiento en el valor de sus acciones.
  • El sector económico de la energía ha experimentado el menor crecimiento en el valor de sus acciones promedio.
In [266]:
# Agrupar los datos por sector económico ordenado por la media del cambio porcentual de las acciones -todas 340  empresas
grouped_dmt = data.groupby("GICS Sector")["Price Change"].mean().reset_index().sort_values("Price Change", ascending=False)
grouped_dmt
Out[266]:
GICS Sector Price Change
4 Health Care 9.586
1 Consumer Staples 8.685
6 Information Technology 7.217
9 Telecommunications Services 6.957
8 Real Estate 6.206
0 Consumer Discretionary 5.846
7 Materials 5.590
3 Financials 3.865
5 Industrials 2.833
10 Utilities 0.804
2 Energy -10.228
In [267]:
# gráfico de barras 340 empresas
plt.figure(figsize=(15,8))
sns.barplot(data=grouped_dmt, x= "GICS Sector", y="Price Change", ci=False)
plt.xticks(rotation=90)
plt.show()

Observaciones: En general, de las 340 empresas:

  • Health Care es el sector de comercio que ha experimentado en promedio, el mayor crecimiento en el valor de sus acciones
  • Consumer Staples e Information Technology son también otros sectores del comercio con un importante crecimiento en el valor de sus acciones.
  • El sector económico de la energía ha experimentado la mayor pérdida del valor de sus acciones, han decrecido un 10.23%
  • Considerando las 340 empresas, las acciones del sector económico que han visto el máximo aumento de precio en promedio de sus acciones pertenecen a el sector de Health Care, con incremento promedio de 9.58%
  • Ahora, considerando a las 85 empresas que sobresalen del P75, que han experimentado el mayor cremiento de sus acciones en promedio, Telecommunications Services ha tenido el mayor crecimiento 24.71%

  • La empresa que experimentó el mayor alza en el aumento de precio de sus acciones es First Solar Inc, del sector económico de la Information Technology, en la sub industria de los Semiconductors. Experimentó un credimiento de 55.052%

3. ¿Cómo se correlacionan las diferentes variables entre sí?

In [268]:
# correlación de variables 
plt.figure(figsize=(20, 20))
sns.heatmap(data.corr(), annot=True, vmin=-1, vmax=1, fmt=".2f", cmap="Spectral")
plt.show()

Observaciones:

La mayor correlación positiva se da entre estas características:

  • Current Price con Earnings per Share tienen una correlación de 0.48
  • Net income con Earnings per Share tienen una correlación de 0.56
  • Net income con Estimated Shares Outstanding tienen una correlación de 0.59

La mayor correlación negativa se da entre estas características:

  • ROE con con Earnings per Share tienen una correlación de -0.41
  • Volativility con Price Change tienen una correlación de -0.41
  • Volativility con Earnings per Shar tienen una correlación de -0.38
  • Volativility con Net income tienen una correlación de -0.38
  • ROE con Net income tienen una correlación de -0.29

No hay una correlación alta entre variables, no obstante de las caracteristicas que presentaron la mayores correlaciones hay algunas observaciones que podrían tener explicaciones lógicas basadas en las relaciones financieras comunes.

Correlaciones Positivas:

Current Price con Earnings per Share (EPS): Es probable que el precio de las acciones esté positivamente correlacionado con las ganancias por acción. Los inversores suelen estar dispuestos a pagar más por acciones de empresas que generan mayores ganancias por cada acción.

Net Income con Earnings per Share (EPS): La correlación positiva entre el ingreso neto y las ganancias por acción también es lógica, ya que las ganancias por acción se calculan utilizando el ingreso neto y el número de acciones en circulación.

Net Income con Estimated Shares Outstanding: Similar a la correlación anterior, ya que el ingreso neto está directamente relacionado con las ganancias por acción y el número de acciones en circulación.

Correlaciones Negativas:

ROE con Earnings per Share (EPS): La correlación negativa podría sugerir que a medida que el ROE ( ingresos netos por el patrimonio de los accionistas) disminuye, las ganancias por acción tienden a disminuir. Esto podría indicar un rendimiento financiero inferior en relación con el capital propio.

Volatility con Price Change y Earnings per Share (EPS): Las correlaciones negativas con la volatilidad podrían indicar que las acciones de empresas menos volátiles tienen cambios de precio más estables y, por lo tanto, podrían tener una correlación negativa con cambios en las ganancias por acción.

4. El índice de efectivo proporciona una medida de la capacidad de una empresa para cubrir sus obligaciones a corto plazo utilizando solo efectivo y equivalentes de efectivo. ¿Cómo varía la razón de efectivo promedio entre los sectores económicos?

Cash Ratio (Ratio de Efectivo): La relación entre las reservas totales de efectivo y equivalentes de efectivo de una empresa y sus pasivos corrientes totales. Conocido como el índice de efectivo, que es una medida de la capacidad de una empresa para cubrir sus obligaciones a corto plazo utilizando solo efectivo y equivalentes de efectivo.

Se obtiene de la relación entre las reservas totales de efectivo y equivalentes de efectivo de una empresa y sus pasivos corrientes totales.

In [269]:
# Agrupar los datos por sector económico ordenado por la media del "Cash Ratio" -todas 340  empresas
in_efectivoprom = data.groupby("GICS Sector")["Cash Ratio"].mean().reset_index().sort_values("Cash Ratio", ascending=False)
in_efectivoprom
Out[269]:
GICS Sector Cash Ratio
6 Information Technology 149.818
9 Telecommunications Services 117.000
4 Health Care 103.775
3 Financials 98.592
1 Consumer Staples 70.947
2 Energy 51.133
8 Real Estate 50.111
0 Consumer Discretionary 49.575
7 Materials 41.700
5 Industrials 36.189
10 Utilities 13.625
In [270]:
#Diagrama de caja para Cash Ratio promedio por sector económico
plt.figure(figsize=(15,5))
plt.xticks(rotation=90)
sns.boxplot( x=data['GICS Sector'],y=data['Cash Ratio'])
plt.show()

Sectores con mayor capacidad ó razón de efectivo promedio:

  • Information Technology (149.818), Telecommunications Services (117.00), Health Care (103.775), Financials (98.592) indicando una sólida posición de liquidez.

Sectores con capacidad razonable a moderada (razón de efectivo promedio):

  • Sector de Consumo Básico (Consumer Staples) Cash Ratio moderado (70.947).Sector (Energy): Cash Ratio de (51.133). Sector Inmobiliario (Real Estate) con un Cash Ratio de 50.111. Consumo Discrecional (Consumer Discretionary): Cash Ratio de 49.575.Materiales (Materials): Tiene un Cash Ratio de 41.700.

Sectores con la menor capacidad para enfrentar obligaciones financieras a corto plazo (razón de efectivo promedio):

  • Industriales (Industrials): Muestra un Cash Ratio de 36.189. Servicios Públicos (Utilities): Tiene el Cash Ratio más bajo (13.625).

5. Las relaciones P/E pueden ayudar a determinar el valor relativo de las acciones de una empresa, ya que representan la cantidad de dinero que un inversionista está dispuesto a invertir en una sola acción de una empresa por cada dólar de sus ganancias. ¿Cómo varía la relación P/E, en promedio, entre sectores económicos?

  • P/E Ratio: relación entre el precio actual de las acciones de la empresa y las ganancias por acción.

  • Un P/E Ratio más alto puede indicar que los inversores están dispuestos a pagar más por cada dólar de ganancias de la empresa. Esto puede sugerir expectativas optimistas sobre el crecimiento futuro de las ganancias.

  • Un P/E Ratio más bajo puede indicar que las acciones de la empresa están menos valoradas en relación con sus ganancias.

In [271]:
# Agrupar los datos por sector económico ordenado por la media del "Cash Ratio" -todas 340  empresas
PE_ratioprom = data.groupby("GICS Sector")["P/E Ratio"].mean().reset_index().sort_values("P/E Ratio", ascending=False)
PE_ratioprom
Out[271]:
GICS Sector P/E Ratio
2 Energy 72.898
6 Information Technology 43.783
8 Real Estate 43.066
4 Health Care 41.135
0 Consumer Discretionary 35.212
1 Consumer Staples 25.521
7 Materials 24.585
10 Utilities 18.719
5 Industrials 18.259
3 Financials 16.023
9 Telecommunications Services 12.223
In [272]:
# P/E Ratio PROMEDIO de los sectores de la economía
plt.figure(figsize=(15,5))
sns.barplot(data=PE_ratioprom, x='GICS Sector', y='P/E Ratio', ci=False)  
plt.xticks(rotation=90)
plt.show()
In [273]:
# Agrupar los datos por sector económico ordenado por la media del "Cash Ratio" -todas 340  empresas
VO_prom = data.groupby("GICS Sector")["Volatility"].mean().reset_index().sort_values("Volatility", ascending=False)
VO_prom
Out[273]:
GICS Sector Volatility
2 Energy 2.569
7 Materials 1.817
6 Information Technology 1.660
0 Consumer Discretionary 1.595
4 Health Care 1.541
5 Industrials 1.417
9 Telecommunications Services 1.342
3 Financials 1.267
8 Real Estate 1.206
1 Consumer Staples 1.153
10 Utilities 1.118
In [274]:
#Diagrama de caja pra observar la variación de P/E Ratio de los sectores económicos
plt.figure(figsize=(15,15))
sns.boxplot(data=data, x='P/E Ratio', y='GICS Sector',showmeans=True, meanline=True)  
plt.xticks(rotation=90)
plt.show()

-El sector de la Energía presenta el P/E Ratio promedio mayor (72.90)

  • Esto puede implicar, que si bien es un sector que en promedio presenta el mayor decrecimiento en el valor de sus acciones, en comparación a los demás sectores, hay optimismo y confianza por parte de los inversores.
  • Sugiere que aún tiene expectativas de crecimiento para este sector. -El sector de la Energía también presenta la mayor Volatility promedio (2.57).
  • Esto podría implicar que aunque hay una relación importante entre riesgo y rendimiento. Es decir, activos más arriesgados a menudo tienen el potencial de proporcionar mayores rendimientos para compensar ese riesgo. -En algunos casos, un sector con mayor volatilidad podría estar asociado con rendimientos potencialmente más altos, y esto podría reflejarse en un P/E Ratio más alto.
  • Por ejemplo, el crecimiento de sectores que actualmente son muy fuertes, necesiten de este sector (Energy) indirectamente, y por ende aunque no presente por el momento un alto crecimiento, podría ser una inversión segura a largo plazo, considerando que el precio de las acciones están bajas en este momento podría ser una buena opción.

Cómo varía la relación P/E, en promedio, entre sectores económicos:

En otros sectores, la media sale de la caja. Esto puede deberse a varias razones, entre ellas:

La distribución de precios de las acciones es muy desigual. En estos casos, un pequeño número de empresas tienen un precio de las acciones muy alto, lo que eleva la media.

El sector está experimentando un cambio significativo. Por ejemplo, el sector de las tecnologías de la información están experimentando un crecimiento acelerado, o Health Care, lo que está provocando que los precios de las acciones de las empresas de este sector aumenten rápidamente.

Energía (Energy): Tiene el P/E Ratio más alto (72.898), lo que indica que, en promedio, los inversores están dispuestos a pagar una prima relativamente alta por las ganancias de las empresas en este sector. Parece que aún hay expectativas optimistas de que las empresas del sector de energía tienen el potencial de generar mayores ganancias en el futuro. La media se encuentra dentro de la caja, indica que la distribución de precios de las acciones del sector energético es relativamente uniforme.

Tecnología de la Información (Information Technology): Tiene un P/E Ratio significativo (43.783), lo que sugiere que las acciones en este sector están valoradas a un nivel relativamente alto en relación con sus ganancias.

Bienes Raíces (Real Estate): Presenta un P/E Ratio de 43.066, similar al sector de tecnología. Las empresas de bienes raíces podrían estar bien valoradas en comparación con sus ganancias.

Cuidado de la Salud (Health Care): Con un P/E Ratio de 41.135, las acciones en el sector de salud también parecen estar bien valoradas por los inversores.

Consumo Discrecional (Consumer Discretionary): Tiene un P/E Ratio de 35.212, indicando que, en promedio, los inversores están dispuestos a pagar una prima razonable por las ganancias de las empresas en este sector.

Bienes de Consumo Básico (Consumer Staples): Presenta un P/E Ratio más bajo (25.521), lo que podría sugerir que las acciones en este sector están relativamente menos valoradas en comparación con sus ganancias.

Materiales (Materials): Muestra un P/E Ratio de 24.585, indicando que, en promedio, las acciones en este sector tienen un precio razonable en relación con sus ganancias.

Servicios Públicos (Utilities): Tiene el P/E Ratio más bajo (18.719), indicando que, en promedio, los inversores están dispuestos a pagar menos por las ganancias de las empresas en este sector.

Industriales (Industrials): Presenta un P/E Ratio de 18.259, indicando una valoración moderada.

Servicios Financieros (Financials): Tiene un P/E Ratio de 16.023, que es relativamente bajo en comparación con algunos otros sectores. Esto podría sugerir que las acciones en el sector financiero están menos valoradas.

Servicios de Telecomunicaciones (Telecommunications Services): Tiene el P/E Ratio más bajo (12.223), indicando que, en promedio, los inversores están dispuestos a pagar menos por las ganancias de las empresas en este sector.

ANALISIS UNIVARIADO DE CARACTERISTICAS CON USO DE HISTOGRAMA Y DIAGRAMA DE CAJA:¶

In [275]:
#Data frame
selected_columns = ['Security', 'GICS Sector', 'GICS Sub Industry', 'Current Price', 'Price Change', 'Volatility',
                    'ROE', 'Cash Ratio', 'Net Cash Flow', 'Net Income', 'Earnings Per Share',
                    'Estimated Shares Outstanding', 'P/E Ratio', 'P/B Ratio']

nume_cols = data.select_dtypes(include=np.number).columns.tolist()
In [276]:
# Para el set de datos de entrenamiento
for feature in nume_cols:
    histogram_boxplot(data, feature, figsize=(12, 7), kde=False, bins=None)     
Observaciones análisis univariado:¶

Current Price-Precio actual: La distribución del precio actual es casi simétrica, sin embargo presenta un sesgo a la derecha. El precio promedio es de 80,86 dólares, pero el precio mínimo es de 4,50 dólares y el precio máximo es de 1274,95 dólares. Presenta valores extremos. Price Change- Cambio de precio: La distribución del cambio de precio es asimétrica con una cola larga a la derecha. El cambio promedio de precio es de 4,078%, pero el cambio mínimo de precio es de -47,13% y el cambio máximo de precio es de 55,05%.

Volatilidad-Volatility: La distribución de la volatilidad es asimétrica, con una cola derecha. La media media de 1,526 y una mediana de 1.386. La volatilidad mínima es de 0,733 y la volatilidad máxima es de 4,580. Tiene una cola a la derecha y valores extremos alejados de la media.

ROE: La distribución del ROE es asimétrica con una cola larga a la derecha. El ROE promedio es de 39,597%, pero el ROE mínimo es de 1% y el ROE máximo es de 917%. Es una variable con alta desviación estándar (96.5)

Ratio de efectivo-Cash Ratio: La distribución del ratio de efectivo es asimétrica a la derecha, con una media de 70,024. El ratio de efectivo mínimo es de 0% y el ratio de efectivo máximo es de 958%. Un ratio de efectivo alto indica que la empresa tiene una buena capacidad de liquidez.El hecho de que el ratio de efectivo mínimo sea de 0% significa que hay empresas que no tienen efectivo disponible para cubrir sus gastos a corto plazo. Estas empresas pueden estar en riesgo de insolvencia si no pueden generar suficiente efectivo para pagar sus facturas.

Flujo de caja neto-Net Cash Flow: La distribución del flujo de caja neto tiene una distribución casi simétrica. El flujo de caja neto promedio es de 555,37 millones de dólares, pero el flujo de caja neto mínimo es de -1120,8 mil millones de dólares y el flujo de caja neto máximo es de 2076,4 mil millones de dólares. Hay presencia de valores extremos bajos y altos.

Ingresos netos-Net Income: La distribución de los ingresos netos es asimétrica, pero similar a una campana normal. Los ingresos netos promedio son de 14943,8 millones de dólares, pero los ingresos netos mínimos son de -2352,8 mil millones de dólares y los ingresos netos máximos son de 2444,2 mil millones de dólares. El hecho de que los ingresos netos mínimos sean de -2352,8 mil millones de dólares significa que hay empresas que están perdiendo mucho dinero. Estas empresas pueden estar en riesgo de insolvencia si no pueden generar suficientes ingresos para cubrir sus gastos.

Ganancias por acción-Earnings Per Share: La distribución de las ganancias por acción es asimétrica sesgado un poco a a la derecha. Las ganancias por acción promedio son de 2,777 dólares, pero las ganancias por acción mínimas son de -61,20 dólares(pérdidas) y las ganancias por acción máximas son de 50,09 dólares. Presenta alta cantidad de valores extremos en ambos sentidos.

Acciones en circulación estimadas- Estimated Shares Outstanding: La distribución de las acciones en circulación estimadas es asimétrica con una cola larga a la derecha. El número promedio de acciones en circulación estimadas es de 5770,3 millones, pero el número mínimo de acciones en circulación estimadas es de 276,7 millones y el número máximo de acciones en circulación estimadas es de 6159,3 mil millones.

Relación precio-beneficio- P/E Ratio: La distribución de la relación precio-beneficio es asimétrica con una cola larga a la derecha. La relación precio-beneficio promedio es de 32,613, pero la relación precio-beneficio mínima es de 2,935 y la relación precio-beneficio máxima es de 528,039. Esto significa que hay una mayor cantidad de empresas con una relación precio-beneficio alta que empresas con una relación precio-beneficio baja.

Relación precio-valor en libros-P/B Ratio: La distribución de la relación precio-valor en libros es asimétrica sesgada un poco a la derecha, tiene una distribución similar a una simétrica. La relación precio-valor en libros promedio es de -1,718, pero la relación precio-valor en libros mínima es de -76,119 y la relación precio-valor en libros máxima es de 129,065. Esto significa que hay una mayor cantidad de empresas con una relación precio-valor en libros alta que empresas con una relación precio-valor en libros baja. Presenta valores extremos a ambos lados.

In [277]:
#Diagrama de barras para las variables categróricas
labeled_barplot(data, "GICS Sector", perc=False, n=None)
  • Hay 11 sectores de comercio identificados.
  • El sector de el comercio con mayor cantidad de empresas es el industrial. ( 53%), seguido del sector financiero (49%).
  • El sector de las Telecomunicaciónes tiene el 5% de las empresas.
In [279]:
labeled_barplot(data, "GICS Sub Industry", perc=False, n=None)
plt.figure(figsize=(100,50))
plt.show()
<Figure size 10000x5000 with 0 Axes>
  • Hay 104 sub industrias, contando con un mayor número de empresas el sector de la exploración de aceite y gas.

ANALISIS BIVARIADO Y MULTIVARIADO DE CARACTERISTICAS¶

In [280]:
plt.figure(figsize=(15, 7))
sns.heatmap(data.corr(), annot=True, vmin=-1, vmax=1, fmt=".2f", cmap="Spectral")
plt.show()
In [281]:
# Pairplot
sns.pairplot(data, diag_kind="kde")
plt.show()
  • No hay mucha relación entre las variables, estas presentan patrones muy variables.

Preprocesamiento de datos¶

Comprobación de valores duplicados¶
  • No existen valores duplicados,
Tratamiento de valores perdidos¶

-No se tienen valores Nulos que tratar.

Comprobación de valores atípicos¶

In [51]:
# Detección de valores extremos -visualización en diagrama de caja

plt.figure(figsize=(15, 12))

numeric_columns = data.select_dtypes(include=np.number).columns.tolist()

for i, variable in enumerate(numeric_columns):
    plt.subplot(3, 4, i + 1)
    plt.boxplot(df[variable], whis=1.5)
    plt.tight_layout()
    plt.title(variable)

plt.show()

-Existen variables con valores extremos pero no se realizará ningún tratamiento de valores.

  • Se va a considerar que en las ultimas 13 semanas, habrían factores que han provocado que los precios de las acciones experimenten fluctuaciones o dispersión de los datos. El sector tecnología, sectores como salud, cuidado personal, consumer discretionary son sectores que demostraron un gran crecimiento en poco tiempo y esto podría inferir en esta situación.

Ingeniería de características¶

In [282]:
# Solo se usarán columnas numéricas, de forma que no se eliminarán variables categóricas
#Columnas numéricas
nume_col = ['Current Price', 'Price Change', 'Volatility',
                    'ROE', 'Cash Ratio', 'Net Cash Flow', 'Net Income', 'Earnings Per Share',
                    'Estimated Shares Outstanding', 'P/E Ratio', 'P/B Ratio'] 
In [283]:
data=df.copy()
Estandarización de la data¶
In [284]:
#escalar los datos
# Scaling the data set before clustering
scaler = StandardScaler()
subset = data[nume_col].copy()
subset_scaled = scaler.fit_transform(subset)
In [285]:
#Crear un dataframe con data escalada
#Creating a dataframe from the scaled data
data_scaled = pd.DataFrame(subset_scaled, columns=subset.columns)
data_scaled
Out[285]:
Current Price Price Change Volatility ROE Cash Ratio Net Cash Flow Net Income Earnings Per Share Estimated Shares Outstanding P/E Ratio P/B Ratio
0 -0.393 0.494 0.273 0.990 -0.211 -0.339 1.554 1.309 0.108 -0.652 -0.507
1 -0.221 0.355 1.137 0.938 0.077 -0.002 0.928 0.057 1.250 -0.312 -0.504
2 -0.367 0.602 -0.427 -0.193 -0.033 0.454 0.744 0.025 1.098 -0.392 0.095
3 0.134 0.826 -0.285 -0.317 1.218 -0.152 -0.220 -0.231 -0.092 0.947 0.424
4 -0.261 -0.493 0.296 -0.266 2.237 0.134 -0.203 -0.375 1.978 3.293 0.199
... ... ... ... ... ... ... ... ... ... ... ...
335 -0.486 0.902 0.540 -0.255 4.308 -0.560 -1.488 -1.127 0.429 -0.082 0.572
336 -0.290 -1.066 -0.080 1.062 -0.477 0.053 -0.051 0.029 -0.168 -0.337 -0.152
337 0.222 0.440 -0.206 -0.400 0.332 0.165 -0.342 -0.304 -0.460 2.234 -1.589
338 -0.547 -0.437 -0.098 -0.369 0.321 -0.051 -0.301 -0.240 -0.378 -0.223 0.119
339 -0.336 1.051 0.143 -0.079 -0.056 0.111 -0.294 -0.319 -0.093 0.855 0.247

340 rows × 11 columns

Agrupación de medios K¶

Agrupación K-means¶

In [290]:
#Calculo de la distorsión promedio
# Elbow mehod para obtener k clusters apropiados de los datos
clusters = range(1, 12)
meanDistortions = []

for k in clusters:
    model = KMeans(n_clusters=k)
    model.fit(data_scaled)
    prediction = model.predict(data_scaled)
    # display(subset_scaled_df.head())
    # print(model.cluster_centers_)
    # print(cdist(subset_scaled_df, model.cluster_centers_, "euclidean"))
    # print(np.min(cdist(subset_scaled_df, model.cluster_centers_, "euclidean"), axis = 1))
    # print(sum(np.min(cdist(subset_scaled_df, model.cluster_centers_, "euclidean"), axis = 1)))
    # print(subset_scaled_df.shape[0])
    distortion = (
        sum(
            np.min(cdist(data_scaled, model.cluster_centers_, "euclidean"), axis=1)
        )
        / data_scaled.shape[0]
    )

    meanDistortions.append(distortion)

    print("Number of Clusters:", k, "\tAverage Distortion:", distortion)
    print("*"*50)

plt.plot(clusters, meanDistortions, "bx-")
plt.xlabel("k")
plt.ylabel("Average Distortion")
plt.title("Selecting k with the Elbow Method", fontsize=20)
Number of Clusters: 1 	Average Distortion: 2.5425069919221697
**************************************************
Number of Clusters: 2 	Average Distortion: 2.382318498894466
**************************************************
Number of Clusters: 3 	Average Distortion: 2.2692367155390745
**************************************************
Number of Clusters: 4 	Average Distortion: 2.176396791566185
**************************************************
Number of Clusters: 5 	Average Distortion: 2.108708268456352
**************************************************
Number of Clusters: 6 	Average Distortion: 2.078458079329907
**************************************************
Number of Clusters: 7 	Average Distortion: 2.0583926312496255
**************************************************
Number of Clusters: 8 	Average Distortion: 1.9606302132649556
**************************************************
Number of Clusters: 9 	Average Distortion: 1.8927973028542797
**************************************************
Number of Clusters: 10 	Average Distortion: 1.8640513241964343
**************************************************
Number of Clusters: 11 	Average Distortion: 1.794217808079478
**************************************************
Out[290]:
Text(0.5, 1.0, 'Selecting k with the Elbow Method')

Observaciones Elbow Method:¶

El gráfico muestra que la distorsión promedio disminuye bruscamente al pasar de 1 cluster a 2 clusters.

Luego, la distorsión continúa disminuyendo, pero a un ritmo más lento, a medida que aumenta el número de clusters. Luego se tiene una distorción importante entre 6 a 8 clusters.

Para elegir el número de clusters definitivo, se deberá revisar otros factores.

Observando el método de codo ("Selecting k with the Elbow Method"), el valor apropiado de k de la curva del codo es dificil de discernir, se podría decir que desde 2 ya empieza a variar.

Revisión de las puntuaciones de las siluetas¶

In [293]:
sil_score = []
cluster_list = list(range(2,12))
for n_clusters in cluster_list:
    clusterer = KMeans(n_clusters=n_clusters)
    preds = clusterer.fit_predict((data_scaled))
    # centers = clusterer.cluster_centers_
    score = silhouette_score(data_scaled, preds)
    sil_score.append(score)
    print("For n_clusters = {}, silhouette score is {}".format(n_clusters, score))

plt.plot(cluster_list, sil_score)
For n_clusters = 2, silhouette score is 0.43969639509980457
For n_clusters = 3, silhouette score is 0.45494915445064904
For n_clusters = 4, silhouette score is 0.45434371948348606
For n_clusters = 5, silhouette score is 0.42375180665673834
For n_clusters = 6, silhouette score is 0.38817178229053784
For n_clusters = 7, silhouette score is 0.4416684377279727
For n_clusters = 8, silhouette score is 0.40462811671790133
For n_clusters = 9, silhouette score is 0.40644769535040703
For n_clusters = 10, silhouette score is 0.39564217627798975
For n_clusters = 11, silhouette score is 0.13241118102915095
Out[293]:
[<matplotlib.lines.Line2D at 0x17bd78fb0d0>]
  • Acorde al gráfico, se tiene que para k=3, K=4 se obtiene el mayor coeficiente de silueta.
  • Seguido de k=7

Graficas de agrupaciones según número k de clusters¶

Se graficarán los grupos deacuerdo a los diferentes valores de k a probar.

In [294]:
# finding optimal no. of clusters with silhouette coefficients
visualizer = SilhouetteVisualizer(KMeans(11, random_state=1))
visualizer.fit(data_scaled)
visualizer.show()
Out[294]:
<Axes: title={'center': 'Silhouette Plot of KMeans Clustering for 340 Samples in 11 Centers'}, xlabel='silhouette coefficient values', ylabel='cluster label'>
In [295]:
# finding optimal no. of clusters with silhouette coefficients
visualizer = SilhouetteVisualizer(KMeans(8, random_state=1))
visualizer.fit(data_scaled)
visualizer.show()
Out[295]:
<Axes: title={'center': 'Silhouette Plot of KMeans Clustering for 340 Samples in 8 Centers'}, xlabel='silhouette coefficient values', ylabel='cluster label'>
In [296]:
# finding optimal no. of clusters with silhouette coefficients
visualizer = SilhouetteVisualizer(KMeans(7, random_state=1))
visualizer.fit(data_scaled)
visualizer.show()
Out[296]:
<Axes: title={'center': 'Silhouette Plot of KMeans Clustering for 340 Samples in 7 Centers'}, xlabel='silhouette coefficient values', ylabel='cluster label'>
In [297]:
# finding optimal no. of clusters with silhouette coefficients
visualizer = SilhouetteVisualizer(KMeans(4, random_state=1))
visualizer.fit(data_scaled)
visualizer.show()
Out[297]:
<Axes: title={'center': 'Silhouette Plot of KMeans Clustering for 340 Samples in 4 Centers'}, xlabel='silhouette coefficient values', ylabel='cluster label'>
In [298]:
# finding optimal no. of clusters with silhouette coefficients
visualizer = SilhouetteVisualizer(KMeans(3, random_state=1))
visualizer.fit(data_scaled)
visualizer.show()
Out[298]:
<Axes: title={'center': 'Silhouette Plot of KMeans Clustering for 340 Samples in 3 Centers'}, xlabel='silhouette coefficient values', ylabel='cluster label'>
In [299]:
# finding optimal no. of clusters with silhouette coefficients
visualizer = SilhouetteVisualizer(KMeans(2, random_state=1))
visualizer.fit(data_scaled)
visualizer.show()
Out[299]:
<Axes: title={'center': 'Silhouette Plot of KMeans Clustering for 340 Samples in 2 Centers'}, xlabel='silhouette coefficient values', ylabel='cluster label'>

Selección del modelo final k-means¶

La distribución de los puntos de datos no parece ser tan buena en todos los casos.
En algunos casos, los puntos de datos están muy dispersos, lo que puede dificultar la interpretación de los clusters.
Se consideró 7 clusters, ó mas (11) considerando que de esta forma compartan media implicando que los puntos de datos de esos clusters tienen, en promedio, las mismas características.
Se buscó la homogeneidad dentro de los clusters, pero siempre hay un cluster dominante y el resto de clusteres parecen tener poca participación, de forma que considerando que en 2 existía también un cambio apbruto y que entre 3 y 4 se tiene el mejor coeficiente de silueta, se tomará 4 como el número adecuado de grupos.

Se decide escoger 3, aunque los clusters 1, 3 no tienen una distribución tan buena y además tienen un coeficiente de silueta mucho menor.

Esto podría deberse a la naturaleza de los datos poco homogeneos.

In [317]:
kmeans = KMeans(n_clusters=3, random_state=0)
kmeans.fit(data_scaled)
Out[317]:
KMeans(n_clusters=3, random_state=0)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
KMeans(n_clusters=3, random_state=0)
In [326]:
#Agregar labels a los data frames
#adding kmeans cluster labels to the original and normalize dataframe
data["K_means_segments"] = kmeans.labels_
data_scaled["K_means_segments"] = kmeans.labels_

Generación de perfiles de clúster¶

In [327]:
cluster_profile = data.groupby("K_means_segments").mean()
In [328]:
cluster_profile["count_in_each_segment"] = (
    data.groupby("K_means_segments")["GICS Sector"].count().values
)
In [329]:
#Perfiles del cluster max
# let's display cluster profiles
cluster_profile.style.highlight_max(color="lightgreen", axis=0)
Out[329]:
  Current Price Price Change Volatility ROE Cash Ratio Net Cash Flow Net Income Earnings Per Share Estimated Shares Outstanding P/E Ratio P/B Ratio count_in_each_segment
K_means_segments                        
0 84.250468 5.595187 1.402117 34.146758 66.815700 10741689.419795 1449597119.453925 3.902338 426357529.820239 24.416003 -2.011211 293
1 52.142857 6.779993 1.175153 26.142857 140.142857 760285714.285714 13368785714.285715 3.769286 3838879870.871428 20.654832 -3.529270 14
2 62.963940 -10.537087 2.774534 93.696970 68.757576 154287151.515152 -3145581545.454545 -7.639091 530986678.995152 110.461063 1.651207 33
In [330]:
#Perfiles del cluster max
# let's display cluster profiles
cluster_profile.style.highlight_min(color="lightgreen", axis=0)
Out[330]:
  Current Price Price Change Volatility ROE Cash Ratio Net Cash Flow Net Income Earnings Per Share Estimated Shares Outstanding P/E Ratio P/B Ratio count_in_each_segment
K_means_segments                        
0 84.250468 5.595187 1.402117 34.146758 66.815700 10741689.419795 1449597119.453925 3.902338 426357529.820239 24.416003 -2.011211 293
1 52.142857 6.779993 1.175153 26.142857 140.142857 760285714.285714 13368785714.285715 3.769286 3838879870.871428 20.654832 -3.529270 14
2 62.963940 -10.537087 2.774534 93.696970 68.757576 154287151.515152 -3145581545.454545 -7.639091 530986678.995152 110.461063 1.651207 33
In [331]:
plt.figure(figsize=(15, 20))
plt.suptitle("Boxplot of numerical variables for each cluster")

for i, variable in enumerate(nume_col):
    plt.subplot(4, 3, i + 1)
    sns.boxplot(data=data, x="K_means_segments", y=variable)

plt.tight_layout(pad=2.0)
In [332]:
data.groupby("K_means_segments").mean().plot.bar(figsize=(15, 6))
Out[332]:
<Axes: xlabel='K_means_segments'>
In [333]:
data_scaled.groupby("K_means_segments").mean().plot.bar(figsize=(15, 6))
Out[333]:
<Axes: xlabel='K_means_segments'>

Perspectivas K-means¶

Observaciones y posibles interpretaciones:

Clúster 0: Hay 293 empresas en este cluster

Precio: Alto ( el máximo ) Cambio de precio: Alto Volatilidad: Moderada ROE: Moderado Ratio de efectivo: Alto Flujo de efectivo neto: Alto Ingresos netos: Altos Ganancias por acción: Altas Acciones en circulación estimadas: Altas Relación P/E: Moderada Relación P/B: Moderada

Este clúster representa a empresas con valoraciones y rendimiento financiero que se podría decir promedio-alto, un sólido desempeño financiero y un alto potencial de crecimiento. Estas empresas pueden considerarse más estables y menos riesgosas que las de otros clústeres, pero también pueden ofrecer un potencial de crecimiento menor. Estas empresas son probables que sean atractivas para los inversores que buscan un crecimiento a largo plazo, sus indicadores sugieren que estas empresas están creciendo rápidamente y están generando una gran cantidad de flujo de efectivo. También es probable que sean atractivas para los inversores que buscan un crecimiento a largo plazo.

Cluster 1: Hay 14 empresas en este cluster.

Precio: Moderado Cambio de precio: Alto ( el máximo ) Volatilidad: Moderada ROE: Moderado Ratio de efectivo: Muy alto ( el máximo ) Flujo de efectivo neto: Muy alto ( el máximo ) Ingresos netos: Moderados-alto ( el máximo ) Ganancias por acción: Moderadas Acciones en circulación estimadas:Muy alto ( el máximo ) Relación P/E: Moderada Relación P/B: Moderada

Presenta caracteristicas positivas muy atractivas para inversores como: tiene el mayor Cash Ratio, Net Cash Flow y Estimated Shares Outstanding que sugiere, que estas empresas tienen una buena posición financiera.

Net Income alto es una característica positiva para una empresa. Indica que la empresa está generando una gran cantidad de ganancias. Esto puede deberse a una serie de factores, como un alto volumen de ventas, un margen de beneficio elevado o una combinación de ambos.

Un cash ratio alto indica que la empresa tiene una gran cantidad de efectivo en relación con sus obligaciones a corto plazo. Estas empresas tiene un colchón financiero que le permite hacer frente a sus deudas a corto plazo sin necesidad de recurrir a terceros.

Un Net Cash Flow alto indica que la empresa está generando un flujo de efectivo positivo. Esto significa que la empresa está generando más dinero del que está gastando.El Net Cash Flow puede ser estacional, se recomienda considerar los datos históricos para obtener una imagen más completa de la salud financiera de la empresa.

Un Estimated Shares Outstanding alto indica que la empresa tiene una gran cantidad de acciones en circulación.

Las empresas del Cluster 1 se caracterizan por tener valoraciones y un desempeño financiero promedio, pero con ratios de efectivo y flujos de efectivo netos muy altos. Estas empresas suelen tener precios moderados, cambios de precio positivos, volatilidad moderada, ROE moderado, ratios de efectivo muy altos, flujos de efectivo netos muy altos, ingresos netos moderados, ganancias por acción moderadas y estimaciones de acciones en circulación muy altas. Sus ratios P/E y P/B también son moderados. Estas características sugieren que estas empresas están generando una gran cantidad de flujo de efectivo, pero no están creciendo tan rápido como las empresas del Cluster 0. También pueden considerarse más estables y menos arriesgadas que las empresas del Cluster 0, pero también pueden ofrecer un menor potencial de crecimiento.Son atractivas por sus ratios de efectivo y flujos de efectivo netos muy altos.

Clúster 2 Hay 33 empresas en este grupo.

Precio: Moderado Cambio de precio: Negativo Volatilidad: Alta ROE: Alto Ratio de efectivo: Bajo Flujo de efectivo neto: Negativo Ingresos netos: Negativos Ganancias por acción: Negativas Acciones en circulación estimadas: Moderadas Relación P/E: Alta Relación P/B: Baja

Las empresas del Cluster 2 se caracterizan por tener valoraciones y un desempeño financiero promedio. Estas empresas presentan precios moderados, cambios de precio negativos, volatilidad alta, ROE alto, ratios de efectivo bajos, flujos de efectivo netos negativos, ingresos netos negativos, ganancias por acción negativas y estimaciones de acciones en circulación moderadas. Sus ratios P/E son altos y sus ratios P/B son bajos. Estas características sugieren que estas empresas no están creciendo y no están generando una gran cantidad de flujo de efectivo. También pueden considerarse más estables y menos arriesgadas que las empresas del Cluster 3, pero también pueden ofrecer un menor potencial de crecimiento.

NOTAPara trabajar con la agrupación jerarquica, y hacer comparación de ambos métodos, el set data debe resetearse al set original.

In [335]:
data=df.copy()
data
Out[335]:
Ticker Symbol Security GICS Sector GICS Sub Industry Current Price Price Change Volatility ROE Cash Ratio Net Cash Flow Net Income Earnings Per Share Estimated Shares Outstanding P/E Ratio P/B Ratio
0 AAL American Airlines Group Industrials Airlines 42.350 10.000 1.687 135 51 -604000000 7610000000 11.390 668129938.500 3.718 -8.784
1 ABBV AbbVie Health Care Pharmaceuticals 59.240 8.339 2.198 130 77 51000000 5144000000 3.150 1633015873.000 18.806 -8.750
2 ABT Abbott Laboratories Health Care Health Care Equipment 44.910 11.301 1.274 21 67 938000000 4423000000 2.940 1504421769.000 15.276 -0.394
3 ADBE Adobe Systems Inc Information Technology Application Software 93.940 13.977 1.358 9 180 -240840000 629551000 1.260 499643650.800 74.556 4.200
4 ADI Analog Devices, Inc. Information Technology Semiconductors 55.320 -1.828 1.701 14 272 315120000 696878000 0.310 2247993548.000 178.452 1.060
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
335 YHOO Yahoo Inc. Information Technology Internet Software & Services 33.260 14.888 1.845 15 459 -1032187000 -4359082000 -4.640 939457327.600 28.976 6.262
336 YUM Yum! Brands Inc Consumer Discretionary Restaurants 52.516 -8.699 1.479 142 27 159000000 1293000000 2.970 435353535.400 17.682 -3.838
337 ZBH Zimmer Biomet Holdings Health Care Health Care Equipment 102.590 9.348 1.404 1 100 376000000 147000000 0.780 188461538.500 131.526 -23.884
338 ZION Zions Bancorp Financials Regional Banks 27.300 -1.159 1.468 4 99 -43623000 309471000 1.200 257892500.000 22.750 -0.063
339 ZTS Zoetis Health Care Pharmaceuticals 47.920 16.679 1.610 32 65 272000000 339000000 0.680 498529411.800 70.471 1.723

340 rows × 15 columns

In [133]:
#data.drop(columns=["K_means_segments"], axis=1, inplace=True)

Agrupación jerárquica¶

In [336]:
#Columnas numéricas
nume_col = ['Current Price', 'Price Change', 'Volatility',
                    'ROE', 'Cash Ratio', 'Net Cash Flow', 'Net Income', 'Earnings Per Share',
                    'Estimated Shares Outstanding', 'P/E Ratio', 'P/B Ratio'] 
subset = data[nume_col].copy()
In [337]:
sc = StandardScaler()
subset_scaled_df = pd.DataFrame(
    sc.fit_transform(subset),
    columns=subset.columns,
)
subset_scaled_df.head()
Out[337]:
Current Price Price Change Volatility ROE Cash Ratio Net Cash Flow Net Income Earnings Per Share Estimated Shares Outstanding P/E Ratio P/B Ratio
0 -0.393 0.494 0.273 0.990 -0.211 -0.339 1.554 1.309 0.108 -0.652 -0.507
1 -0.221 0.355 1.137 0.938 0.077 -0.002 0.928 0.057 1.250 -0.312 -0.504
2 -0.367 0.602 -0.427 -0.193 -0.033 0.454 0.744 0.025 1.098 -0.392 0.095
3 0.134 0.826 -0.285 -0.317 1.218 -0.152 -0.220 -0.231 -0.092 0.947 0.424
4 -0.261 -0.493 0.296 -0.266 2.237 0.134 -0.203 -0.375 1.978 3.293 0.199

Comprobación de la correlación cofenética¶

In [338]:
#Calculo del coeficiente cofenético para las variables normalizadas para distintas distancias y enlaces

# list of distance metrics
distance_metrics = ["euclidean", "chebyshev", "mahalanobis", "cityblock"]

# list of linkage methods
linkage_methods = ["single", "complete", "average", "weighted"]

high_cophenet_corr = 0
high_dm_lm = [0, 0]

for dm in distance_metrics:
    for lm in linkage_methods:
        Z = linkage(subset_scaled_df, metric=dm, method=lm)
        c, coph_dists = cophenet(Z, pdist(subset_scaled_df))
        print(
            "Cophenetic correlation for {} distance and {} linkage is {}.".format(
                dm.capitalize(), lm, c
            )
        )
        if high_cophenet_corr < c:
            high_cophenet_corr = c
            high_dm_lm[0] = dm
            high_dm_lm[1] = lm
Cophenetic correlation for Euclidean distance and single linkage is 0.9232271494002922.
Cophenetic correlation for Euclidean distance and complete linkage is 0.7873280186580672.
Cophenetic correlation for Euclidean distance and average linkage is 0.9422540609560814.
Cophenetic correlation for Euclidean distance and weighted linkage is 0.8693784298129404.
Cophenetic correlation for Chebyshev distance and single linkage is 0.9062538164750717.
Cophenetic correlation for Chebyshev distance and complete linkage is 0.598891419111242.
Cophenetic correlation for Chebyshev distance and average linkage is 0.9338265528030499.
Cophenetic correlation for Chebyshev distance and weighted linkage is 0.9127355892367.
Cophenetic correlation for Mahalanobis distance and single linkage is 0.9259195530524589.
Cophenetic correlation for Mahalanobis distance and complete linkage is 0.792530720285.
Cophenetic correlation for Mahalanobis distance and average linkage is 0.9247324030159735.
Cophenetic correlation for Mahalanobis distance and weighted linkage is 0.8708317490180427.
Cophenetic correlation for Cityblock distance and single linkage is 0.9334186366528574.
Cophenetic correlation for Cityblock distance and complete linkage is 0.7375328863205818.
Cophenetic correlation for Cityblock distance and average linkage is 0.9302145048594667.
Cophenetic correlation for Cityblock distance and weighted linkage is 0.731045513520281.
In [339]:
#imprime la combinación de distancia y enlace que obtiene la mayor correlación cofenética
# printing the combination of distance metric and linkage method with the highest cophenetic correlation
print('*'*100)
print(
    "Highest cophenetic correlation is {}, which is obtained with {} distance and {} linkage.".format(
        high_cophenet_corr, high_dm_lm[0].capitalize(), high_dm_lm[1]))
print(
    "El mayor coeficiente cofenético es {}, se obtiene de {} distancia y {} enlace.".format(
        high_cophenet_corr, high_dm_lm[0].capitalize(), high_dm_lm[1]        
    ))
****************************************************************************************************
Highest cophenetic correlation is 0.9422540609560814, which is obtained with Euclidean distance and average linkage.
El mayor coeficiente cofenético es 0.9422540609560814, se obtiene de Euclidean distancia y average enlace.

Exploremos diferentes métodos de vinculación solo con la distancia euclidiana.¶

In [340]:
# list of linkage methods
linkage_methods = ["single", "complete", "average", "centroid", "ward", "weighted"]

high_cophenet_corr = 0
high_dm_lm = [0, 0]

for lm in linkage_methods:
    Z = linkage(subset_scaled_df, metric="euclidean", method=lm)
    c, coph_dists = cophenet(Z, pdist(subset_scaled_df))
    print("Cophenetic correlation for {} linkage is {}.".format(lm, c))
    if high_cophenet_corr < c:
        high_cophenet_corr = c
        high_dm_lm[0] = "euclidean"
        high_dm_lm[1] = lm
Cophenetic correlation for single linkage is 0.9232271494002922.
Cophenetic correlation for complete linkage is 0.7873280186580672.
Cophenetic correlation for average linkage is 0.9422540609560814.
Cophenetic correlation for centroid linkage is 0.9314012446828154.
Cophenetic correlation for ward linkage is 0.7101180299865353.
Cophenetic correlation for weighted linkage is 0.8693784298129404.
In [341]:
# printing the combination of distance metric and linkage method with the highest cophenetic correlation
print(
    "Highest cophenetic correlation is {}, which is obtained with {} linkage.".format(
        high_cophenet_corr, high_dm_lm[1]
    )
)
   
Highest cophenetic correlation is 0.9422540609560814, which is obtained with average linkage.
Observaciones:¶

Vemos que la correlación cofenética es máxima con la distancia euclidiana y el enlace average linkage.
También a correlación cofenética es alta con la distancia euclidiana y el enlace centroide linkage.

Comprobación de dendogramas¶

Veamos los dendrogramas para los diferentes métodos de vinculación.

In [342]:
# list of linkage methods
linkage_methods = ["single", "complete", "average", "centroid", "ward", "weighted"]

# lists to save results of cophenetic correlation calculation
compare_cols = ["Linkage", "Cophenetic Coefficient"]

# to create a subplot image
fig, axs = plt.subplots(len(linkage_methods), 1, figsize=(15, 30))

# We will enumerate through the list of linkage methods above
# For each linkage method, we will plot the dendrogram and calculate the cophenetic correlation
for i, method in enumerate(linkage_methods):
    Z = linkage(subset_scaled_df, metric="euclidean", method=method)
 
    dendrogram(Z, ax=axs[i])
    axs[i].set_title(f"Dendrogram ({method.capitalize()} Linkage)")

    coph_corr, coph_dist = cophenet(Z, pdist(subset_scaled_df))
    axs[i].annotate(
        f"Cophenetic\nCorrelation\n{coph_corr:0.2f}",
        (0.80, 0.80),
        xycoords="axes fraction",
    )
Observaciones:¶
- La correlación cofenética es más alta para los métodos de enlace promedio y centroide.  
- Seguiremos adelante con la vinculación media,-enlace promedio.  
- 6 parece ser el número apropiado de grupos del dendrograma de enlace promedio.  

Creando modelo usando sklearn¶

In [343]:
HCmodel = AgglomerativeClustering(n_clusters=6, affinity="euclidean", linkage="average")
HCmodel.fit(subset_scaled_df)  
Out[343]:
AgglomerativeClustering(affinity='euclidean', linkage='average', n_clusters=6)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
AgglomerativeClustering(affinity='euclidean', linkage='average', n_clusters=6)
In [344]:
subset_scaled_df["HC_Clusters"] = HCmodel.labels_
data["HC_Clusters"] = HCmodel.labels_

Generación de perfiles de clúster- euclidean average¶

In [345]:
cluster_profile = data.groupby("HC_Clusters").mean()
In [346]:
cluster_profile["count_in_each_segments"] = (
    data.groupby("HC_Clusters")["ROE"].count().values
)
In [347]:
#Sectores económicos en cluster
# let's see the names of the names of economic sector in each cluster
for cl in data["HC_Clusters"].unique():
    print(" En cluster {}, los siguientes sectores económicos están presentes:".format(cl))
    print(data[data["HC_Clusters"] == cl]["GICS Sector"].unique())
    print()
 En cluster 0, los siguientes sectores económicos están presentes:
['Industrials' 'Health Care' 'Information Technology' 'Consumer Staples'
 'Utilities' 'Financials' 'Real Estate' 'Materials'
 'Consumer Discretionary' 'Energy' 'Telecommunications Services']

 En cluster 5, los siguientes sectores económicos están presentes:
['Information Technology']

 En cluster 2, los siguientes sectores económicos están presentes:
['Energy']

 En cluster 1, los siguientes sectores económicos están presentes:
['Financials' 'Information Technology']

 En cluster 3, los siguientes sectores económicos están presentes:
['Information Technology']

 En cluster 4, los siguientes sectores económicos están presentes:
['Consumer Discretionary']

  • Se observa, que en el cluster 0 se agrupan 11 sectores, y el resto de los clusters solo tiene uno ó dos sectores cada uno. Este agrupamiento NO aporta suficiente variabilidad.
  • Se utilizará la vinculación Ward ya que tiene grupos más distintos y separados (como se ve en su dendrograma ).
  • En este caso, el número de clusters 4 parece ser el número apropiado de conglomerados del dendrograma para la vinculación Ward.

Creación del modelo Euclidean-Ward¶

In [348]:
#Clusters= 4 Ward
HCmodel = AgglomerativeClustering(n_clusters=4, affinity="euclidean", linkage="ward")
HCmodel.fit(subset_scaled_df)
Out[348]:
AgglomerativeClustering(affinity='euclidean', n_clusters=4)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
AgglomerativeClustering(affinity='euclidean', n_clusters=4)
In [350]:
HCmodel = AgglomerativeClustering(n_clusters=4, affinity="euclidean", linkage="ward")
HCmodel.fit(subset_scaled_df)
Out[350]:
AgglomerativeClustering(affinity='euclidean', n_clusters=4)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
AgglomerativeClustering(affinity='euclidean', n_clusters=4)
In [351]:
subset_scaled_df["HC_Clusters"] = HCmodel.labels_
data["HC_Clusters"] = HCmodel.labels_

Generación de perfiles de clúster Euclidean-Ward¶

In [352]:
cluster_profile = data.groupby("HC_Clusters").mean()
In [353]:
cluster_profile["count_in_each_segments"] = (
    data.groupby("HC_Clusters")["GICS Sector"].count().values
)
In [354]:
# let's see the names of the countries in each cluster
for cl in data["HC_Clusters"].unique():
    print(
        "The",
        data[data["HC_Clusters"] == cl]["GICS Sector"].nunique(),
        "GICS Sector in cluster",
        cl,
        "are:",
    )
    print(data[data["HC_Clusters"] == cl]["GICS Sector"].unique())
    print("-" * 100, "\n")
The 11 GICS Sector in cluster 3 are:
['Industrials' 'Health Care' 'Information Technology' 'Consumer Staples'
 'Utilities' 'Financials' 'Real Estate' 'Materials'
 'Consumer Discretionary' 'Telecommunications Services' 'Energy']
---------------------------------------------------------------------------------------------------- 

The 8 GICS Sector in cluster 1 are:
['Information Technology' 'Health Care' 'Consumer Discretionary'
 'Financials' 'Real Estate' 'Telecommunications Services'
 'Consumer Staples' 'Materials']
---------------------------------------------------------------------------------------------------- 

The 7 GICS Sector in cluster 0 are:
['Industrials' 'Energy' 'Consumer Discretionary' 'Consumer Staples'
 'Materials' 'Financials' 'Information Technology']
---------------------------------------------------------------------------------------------------- 

The 6 GICS Sector in cluster 2 are:
['Financials' 'Consumer Discretionary' 'Consumer Staples' 'Health Care'
 'Telecommunications Services' 'Energy']
---------------------------------------------------------------------------------------------------- 

  • Ahora los 4 clusters parecen tener más variabilidad.
In [355]:
# Number de sectorespor cluster
cluster_profile["count_in_each_segments"]
Out[355]:
HC_Clusters
0     29
1     27
2      9
3    275
Name: count_in_each_segments, dtype: int64
In [356]:
#Perfil de cluster para valores máx
# lets display cluster profile
cluster_profile.style.highlight_max(color="lightgreen", axis=0)
Out[356]:
  Current Price Price Change Volatility ROE Cash Ratio Net Cash Flow Net Income Earnings Per Share Estimated Shares Outstanding P/E Ratio P/B Ratio count_in_each_segments
HC_Clusters                        
0 48.006208 -11.263107 2.590247 196.551724 40.275862 -495901724.137931 -3597244655.172414 -8.689655 486319827.294483 75.110924 -2.162622 29
1 213.518640 15.252913 1.779861 22.333333 258.740741 1504052814.814815 1716529851.851852 5.177407 689838338.441482 78.441603 13.022590 27
2 46.672222 5.166566 1.079367 25.000000 58.333333 -3040666666.666667 14848444444.444445 3.435556 4564959946.222222 15.596051 -6.354193 9
3 72.421687 4.563230 1.403434 25.218182 55.014545 72801872.727273 1572467469.090909 3.728564 445003946.148764 24.188244 -2.966949 275
In [357]:
#Perfil de cluster para valores min
# lets display cluster profile
cluster_profile.style.highlight_min(color="lightgreen", axis=0)
Out[357]:
  Current Price Price Change Volatility ROE Cash Ratio Net Cash Flow Net Income Earnings Per Share Estimated Shares Outstanding P/E Ratio P/B Ratio count_in_each_segments
HC_Clusters                        
0 48.006208 -11.263107 2.590247 196.551724 40.275862 -495901724.137931 -3597244655.172414 -8.689655 486319827.294483 75.110924 -2.162622 29
1 213.518640 15.252913 1.779861 22.333333 258.740741 1504052814.814815 1716529851.851852 5.177407 689838338.441482 78.441603 13.022590 27
2 46.672222 5.166566 1.079367 25.000000 58.333333 -3040666666.666667 14848444444.444445 3.435556 4564959946.222222 15.596051 -6.354193 9
3 72.421687 4.563230 1.403434 25.218182 55.014545 72801872.727273 1572467469.090909 3.728564 445003946.148764 24.188244 -2.966949 275
In [358]:
# Variación de la data filtrada por clusters
plt.figure(figsize=(20, 35))
plt.suptitle("Boxplot of scaled numerical variables for each cluster", fontsize=20)

for i, variable in enumerate(nume_cols):
    plt.subplot(5, 3, i + 1)
    sns.boxplot(data=subset_scaled_df, x="HC_Clusters", y=variable)

plt.tight_layout(pad=2.0)
In [359]:
#Variación de la data original por clusters
plt.figure(figsize=(20, 35))
plt.suptitle("Boxplot of original numerical variables for each cluster", fontsize=20)

for i, variable in enumerate(nume_cols):
    plt.subplot(5, 3, i + 1)
    sns.boxplot(data=data, x="HC_Clusters", y=variable)

plt.tight_layout(pad=2.0)
In [360]:
subset_scaled_df.groupby("HC_Clusters").mean().plot.bar(figsize=(20, 10))
Out[360]:
<Axes: xlabel='HC_Clusters'>
In [361]:
data.groupby("HC_Clusters").mean().plot.bar(figsize=(20, 10))
Out[361]:
<Axes: xlabel='HC_Clusters'>

Perspectivas Agrupación Jerarquica¶

Número de empresas en cada agrupación o cluster:

Cluster 0: 29 Cluster 1: 27 Cluster 2: 9 Cluster 3: 275

Cluster 0:

  • Cluster 0 valores de variables máximos: Volatility, ROE.
  • Cluster 0 valores de variables minimos: Price Change, Cash Ratio, Net Income, Earnings Per Share

Valores máximos:

  • Volatility: Alto
  • ROE: Alto

Valores mínimos:

  • Price Change: Negativo
  • Cash Ratio: Moderado
  • Net Income: Negativo
  • Earnings Per Share: Negativo

Las empresas del cluster 0 se caracterizan por tener una alta volatilidad, esto indica que sus precios son volátiles y pueden fluctuar mucho. También tienen un alto rendimiento sobre el capital (ROE), lo que indica que están generando mucho dinero con sus activos. Sin embargo, las empresas del cluster 0 también tienen un precio actual bajo, un ratio de efectivo moderado, un beneficio neto negativo y una rentabilidad por acción negativa. Esto indica que estas empresas pueden estar creciendo rápidamente, pero aún no están generando ganancias. En general, las empresas del cluster 0 pueden ser atractivas para inversores que busquen empresas con un alto potencial de crecimiento, pero que estén dispuestos a asumir un mayor riesgo.

Cluster 1:

  • Cluster 1 valores de variables máximos: Current Price, Price Change,Cash Ratio, Net Cash Flow,
    Earnings Per Share, P/E Ratio, P/B Ratio
  • Cluster 1 valores de variables minimos: ROE

Valores máximos:

  • Current Price: Alto
  • Price Change: Alto
  • Cash Ratio: Muy alto
  • Net Cash Flow: Muy alto

Valores mínimos:

  • Volatility: Moderado
  • ROE: Moderado-Bajo

Las empresas del cluster 1 se caracterizan por tener un ratio de efectivo muy alto, esto indica que tienen una gran cantidad de dinero en efectivo disponible.También tienen un flujo de efectivo neto muy alto, lo que indica que están generando mucho dinero en efectivo.

Sin embargo, las empresas del cluster 1 también tienen una volatilidad moderada y un rendimiento sobre el capital moderado. Esto indica que estas empresas no están creciendo tan rápidamente como las del cluster 0, pero que son financieramente estables.

El cluster 1 tiene los valores máximos de Current Price y Price Change. Esto indica que estas empresas tienen un precio actual alto y que sus precios están aumentando.Estas observaciones pueden ser relevantes para inversores que busquen empresas con un potencial de crecimiento a corto plazo. Sin embargo, es importante tener en cuenta que el cluster 1 también tiene valores moderados de Volatility y un bajo ROE. Esto indica que estas empresas no están creciendo tan rápidamente como las del cluster 0, pero que son financieramente estables. En general, las empresas del cluster 1 pueden ser atractivas para inversores que busquen empresas con un crecimiento a corto plazo, pero que no quieran asumir un riesgo demasiado alto.

Cluster 2:

  • Cluster 2 valores de variables máximos: Net Income, Estimated Shares Outstanding.
  • Cluster 2 valores de variables minimos: Current Price, Net Cash Flow, Volatility, P/E Ratio, P/B Ratio.

Valores máximos:

  • Price Change: Positivo
  • Earnings Per Share: Positivo

Valores mínimos:

  • Current Price: Bajo
  • Net Cash Flow: Negativo
  • Volatility: Baja
  • P/E Ratio:Bajo
  • P/B Ratio: Negativo

Valores mínimos:

Precio actual: Esto indica que las empresas de este sector se están negociando a precios relativamente bajos. Volatilidad: Esto sugiere que los precios de las acciones de estas empresas están experimentando fluctuaciones relativamente bajas.
Flujo de efectivo neto: El flujo de efectivo neto negativo indica que estas empresas están utilizando más efectivo del que están generando.
Ratio P/E: Los ratios P/E bajos sugieren que estas empresas están infravaloradas en comparación con sus ganancias. Ratio P/B: Los ratios P/B negativos indican que estas empresas tienen un valor contable negativo, lo que significa que sus pasivos superan a sus activos.

Valores máximos:

Ingreso neto: Esto indica que las empresas de este sector están generando ganancias positivas. Acciones en circulación estimadas: Un número elevado de acciones en circulación estimadas sugiere que estas empresas tienen un gran número de acciones en circulación, lo que puede hacerlas más líquidas pero también más volátiles. La combinación de valores mínimos y máximos en el sector 2 sugiere una mezcla de rasgos positivos y negativos. Por el lado positivo, estas empresas tienen un ingreso neto positivo y se están negociando a precios relativamente bajos, lo que indica un potencial de crecimiento. Sin embargo, su flujo de efectivo neto negativo, los ratios P/E bajos y los ratios P/B negativos plantean preocupaciones sobre su estabilidad financiera y su valoración.Los inversores del sector 2 deben sopesar cuidadosamente el potencial de crecimiento frente a los riesgos asociados.

Cluster 3:

  • Cluster 3 valores de variables minimos: Estimated Shares Outstanding, P/B Ratio (negativo)

Las empresas del sector 3 se caracterizan por tener una valoración y un desempeño financiero promedio, pero con una mayor rentabilidad por acción y un número de acciones en circulación estimado alto. Estas empresas tienen precios de acciones moderados, cambios de precios positivos, volatilidad moderada, un ROE moderado, un ratio de efectivo moderado, flujos de efectivo netos positivos, beneficio neto moderado, rentabilidad por acción moderada y un número de acciones en circulación estimado promedio. Sus ratios P/E y P/B también son moderados.

Estas características sugieren que estas empresas no están creciendo tan rápidamente como las empresas del sector 0, pero pueden ofrecer más estabilidad y menos riesgo que las empresas del sector 2.

EDA¶

  • Es una buena idea explorar los datos una vez más después de manipularlos.
In [362]:
data.describe(include='all').T
Out[362]:
count unique top freq mean std min 25% 50% 75% max
Ticker Symbol 340 340 AAL 1 NaN NaN NaN NaN NaN NaN NaN
Security 340 340 American Airlines Group 1 NaN NaN NaN NaN NaN NaN NaN
GICS Sector 340 11 Industrials 53 NaN NaN NaN NaN NaN NaN NaN
GICS Sub Industry 340 104 Oil & Gas Exploration & Production 16 NaN NaN NaN NaN NaN NaN NaN
Current Price 340.000 NaN NaN NaN 80.862 98.055 4.500 38.555 59.705 92.880 1274.950
Price Change 340.000 NaN NaN NaN 4.078 12.006 -47.130 -0.939 4.820 10.695 55.052
Volatility 340.000 NaN NaN NaN 1.526 0.592 0.733 1.135 1.386 1.696 4.580
ROE 340.000 NaN NaN NaN 39.597 96.548 1.000 9.750 15.000 27.000 917.000
Cash Ratio 340.000 NaN NaN NaN 70.024 90.421 0.000 18.000 47.000 99.000 958.000
Net Cash Flow 340.000 NaN NaN NaN 55537620.588 1946365312.176 -11208000000.000 -193906500.000 2098000.000 169810750.000 20764000000.000
Net Income 340.000 NaN NaN NaN 1494384602.941 3940150279.328 -23528000000.000 352301250.000 707336000.000 1899000000.000 24442000000.000
Earnings Per Share 340.000 NaN NaN NaN 2.777 6.588 -61.200 1.558 2.895 4.620 50.090
Estimated Shares Outstanding 340.000 NaN NaN NaN 577028337.754 845849595.418 27672156.860 158848216.100 309675137.800 573117457.325 6159292035.000
P/E Ratio 340.000 NaN NaN NaN 32.613 44.349 2.935 15.045 20.820 31.765 528.039
P/B Ratio 340.000 NaN NaN NaN -1.718 13.967 -76.119 -4.352 -1.067 3.917 129.065
HC_Clusters 340.000 NaN NaN NaN 2.559 0.959 0.000 3.000 3.000 3.000 3.000

K-means vs Agrupamiento jerárquico¶

  • ¿Qué técnica de agrupamiento tardó menos en ejecutarse?

K means es más rápida de ejecutar, esto podría deberse a que la agrupación jerárquica debe calcular la distancia entre todos los pares de puntos de datos, mientras que K-means solo necesita calcular la distancia entre cada punto de datos y los centroides de los clústeres. No obstante, la interpretación de el número de clusters a usar, y el desbalanceo de la data, fueron los que ocasionaron mayor duración en cuanto al tiempo para resolver el ejercicio, dado el grado de interpretación y subjetividad asociado.

  • ¿Qué técnica de agrupamiento le dio más agrupaciones distintas, o son lo mismo? - ¿Cuántos clústeres se obtienen como el número apropiado de clústeres de ambos algoritmos?

El número de agrupaciones que se obtienen con K-means depende del número de centroides que se especifique. En este ejercicio, se especificaron 3 centroides, por lo que K-means produjo 3 agrupaciones, pero también se sugirió 4.

La agrupación jerárquica produce un dendrograma, que es un gráfico que representa la relación entre los puntos de datos. El número de agrupaciones que se obtienen con la agrupación jerárquica depende del nivel en el que se corte el dendrograma.

En este ejercicio, se cortó el dendrograma en 4 niveles, por lo que la agrupación jerárquica produjo 4 agrupaciones.

En K means inicialmente se optó por usar de 8 a 11 clusters, y en agrupación jerarquica manejar al menos 6, pero dada la naturaleza de los datos, no se aportaba demasiado a la clasificación el aumentar estos valores. Ambos casos se vieron perjudicados por los valores extremos, el desbalanceo de los datos que implicaba un conjunto altamente predominante. Por lo que se considera que tienen resultados similares, y se consideró usar entre 3 a 4 clusters ( disminuir el número de clusters).

También puede mencionar cualquier diferencia o similitud que haya obtenido en los perfiles de clúster de ambas técnicas de agrupación.

Respecto a los datos, y su evidente desbalanceo, se pueden buscar alternativas para mejorar las distribuciones, y obtener valores de silueta y coeficientes cofenericos superiores.

Los valores extremos son puntos de datos que se encuentran muy alejados del resto de los puntos de datos en un conjunto de datos. Estos puntos de datos pueden afectar los resultados del agrupamiento, ya que pueden sesgar la distancia entre los puntos de datos.

En el caso del conjunto de datos utilizado, existen algunos valores extremos. Probablemente de haberse realizado el ejercicio de tratarlos, es posible haber encontrado mayor homogeneidad entre clusters,

La distancia euclidiana es sensible a los valores extremos, La distancia euclidiana es una medida de distancia que se basa en la raíz cuadrada de la suma de las diferencias entre los puntos de datos. Esta distancia es sensible a los valores extremos, ya que los valores extremos pueden aumentar significativamente la distancia entre los puntos de datos.

En el caso del conjunto de datos de empresas utilizado en este ejercicio, la distancia euclidiana entre el punto de datos con el precio actual más alto y el resto de los puntos de datos es muy alta. Esto se debe a que la distancia euclidiana tiene en cuenta la diferencia absoluta entre los precios actuales de los puntos de datos.

La distancia de Manhattan es menos sensible a los valores extremos,la distancia de Manhattan es una medida de distancia que se basa en la suma de las diferencias absolutas entre los puntos de datos. Esta distancia es menos sensible a los valores extremos que la distancia euclidiana, ya que no tiene en cuenta la raíz cuadrada de las diferencias, por lo que aplicar este parámetro es posible que trajera alguna ventaja en los resultados de agrupación.

Opciones como PCA, ingenieria de caracteristicas , submuestreo ó sobremuestreo podrían aplicarse para manejar el desbalanceo.

Información práctica y recomendaciones¶

Recomendaciones comerciales

Conclusiones para agrupaciones K-means

  • En general, los clústeres 0 y 1 representan a empresas con un potencial de crecimiento positivo.

  • El clúster 0 se caracteriza por un crecimiento más rápido y un potencial de crecimiento más alto, mientras que el clúster 1 se caracteriza por una posición financiera más sólida y un menor potencial de crecimiento.

  • El clúster 2 representa a empresas con un potencial de crecimiento negativo.

Conclusiones para agrupaciones Agrupación jerarquica

  • Las empresas del cluster 0 se caracterizan por tener una alta valoración, un buen desempeño financiero y un alto potencial de crecimiento. Las empresas del cluster 0 pueden ser atractivas para inversores que buscan un crecimiento a largo plazo.

  • Las empresas del cluster 1 se caracterizan por tener una valoración y un desempeño financiero promedio, pero con un ratio de efectivo y flujo de efectivo neto muy alto. Las empresas del cluster 1 pueden ser atractivas para inversores que buscan empresas con un buen flujo de efectivo.

  • Las empresas del cluster 2 se caracterizan por tener una valoración y un desempeño financiero promedio, pero con un ratio de efectivo más bajo y flujo de efectivo neto negativo.

  • Las empresas del cluster 2 pueden ser atractivas para inversores que buscan empresas con costos de acciones bajos y pueden manejar el riesgo.

  • Las empresas del cluster 3 se caracterizan por tener una valoración y un desempeño financiero promedio, pero con una mayor rentabilidad por acción y acciones en circulación estimadas más altas.

  • Las empresas del cluster 3 pueden ser atractivas para inversores que buscan empresas con una alta rentabilidad por acción.
In [ ]: